从数组中删除空元素或未定义元素

时间:2018-02-07 17:48:09

标签: javascript arrays

我在从数组中删除空元素或未定义元素时遇到问题。我试过这个:

function clean(item) {
    for (var i = 0; i < item.length; i++) {
        if (item[i] === undefined || item[i] == "") {
            item.splice(i, 1);
            i--;
        }
    }

    return item;
};

我没有任何结果。

这是我的数组的例子:

example of my array

3 个答案:

答案 0 :(得分:0)

这是我过去写的一个有用的片段。

&#13;
&#13;
Array.prototype.empty = function() {
    for (var i = 0, s = this.length; i < s; i++) { this.pop(); }
    return this;
};

Array.prototype.removeAll = function(item) {
    var result = [];

    for (var i = 0, j = 0, s = this.length; i < s; i++) {
        if (this[i] != item) { result[j++] = this[i]; }
    }

    this.empty();
    for (var i = 0, s = result.length; i < s;) { this.push(result[i++]); }
};
&#13;
&#13;
&#13;

当然它可能不是世界上最好的解决方案,但它可以工作,再加上这个功能,您可以随时使用它从阵列中删除其他字符/特定元素。就我个人而言,我也更喜欢使用它的语法,但这仅仅是我,我个人认为编写类似的东西更简洁:

arrayVar.removeAll("");

而不是更像:

arrayVar = clean(ArrayVar);

我所知道的是这个解决方案有效。

答案 1 :(得分:0)

您可以将数组传输到临时数组,而不添加空的或未定义的数组

function clean(item) {
    var tempArr = [];
    for (var i = 0; i < item.length; i++) {
        if (item[i] !== undefined && item[i] != "") {
            tempArr.push(item[i]);
        }
    }
    return tempArr;
}

答案 2 :(得分:0)

arr = arr.filter((entry) => { return entry.trim() != '' })