我在 stackoverflow 上找到了这个有用的代码片段:
Array.prototype.clean = function(deleteValue) {
for (var i = 0; i < this.length; i++) {
if (this[i] == deleteValue) {
this.splice(i, 1);
i--;
}
}
return this;
};
我用它从我当前移植到 Firefox 的 chrome 扩展中的数组中删除空值。我像这样使用ist:
foobar = foo.concat(bar).clean('').toString();
在 chrome 中运行良好,但在 Firefox 中我得到一个 TypeError:
TypeError: foo.concat(...).clean is not a function
有什么建议可能是什么问题?
//编辑//
foo 和 bar 是数组, foo 来自一个 json,解析如下:
var json = {property: 'a,b,c,d,e,f,g'};
json = json.property.split(',');
和来自一个文本区域的栏,它被解析如下:
function digestTextField (string) {
// takes string of format "a, b , c", trims spaces, converts to lower case
var rawText = document.getElementById(string + 'Events').value,
digestedText = rawText.split(','),
i;
for (i = 0; i < digestedText.length; i += 1) {
digestedText[i] = digestedText[i].toLowerCase()
.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
return digestedText;
}
然后在调用 .clean('') 之前将两者都保存到 simpleStorage 并从中读取。