过滤空数组

时间:2014-09-18 03:13:51

标签: javascript jquery

假设我有arr1arr2设置,如下所示。

var arr1 = [
    {
      items: ['1','2','3']
    },

    {
      items: ['4','5','6']
    },

    {
      items: [] // empty array
    },

    ...
]

var arr2 = [
    ['A', 'B', 'C'],
    ['D', 'E', 'F'],
    ['X', 'Y', 'Z'],
    ...
]

我想要做的是items中有一个空的arr1数组:

  1. 创建一个新的filtered_arr,其中只包含具有非空items数组的对象。
  2. 找出该数组的索引(在上例中,空数组出现在arr1[2]点)并过滤掉arr2中的相应位置 - 意味着删除arr2[2]数组
  3. 任何帮助?

2 个答案:

答案 0 :(得分:4)

您可以使用本机JS数组filter方法按指定标准过滤arr1中的值(在这种情况下 - 值是否包含空白数组)。如果您的条件匹配,您可以使用splice方法随后从arr2删除相应索引处的项目。

此实现如下:

var filtered_arr = arr1.filter(function(val, idx) {
    if (val['items'].length == 0) {
        arr2.splice(idx, 1);
        return false;
    }
    return true;
});

jsFiddle Demo

答案 1 :(得分:1)

尝试类似

的内容

var arr1 = [{
    items: ['1', '2', '3']
}, {
    items: ['4', '5', '6']
}, {
    items: [] // empty array
}, {
    items: ['7', '8', '9']
}, {
    items: ['10', '11', '12']
}]

var arr2 = [
    ['A', 'B', 'C'],
    ['D', 'E', 'F'],
    ['G', 'H', 'I'],
    ['J', 'K', 'L'],
    ['X', 'Y', 'Z']
]

var filtered_arr = [];
arr1.forEach(function(val, idx){
    if(val.items.length){
        filtered_arr.push(val);
    }else{
        arr2.splice(idx, 1)
    }
});

$('#filtered_arr').text(JSON.stringify(filtered_arr));
$('#arr2').text(JSON.stringify(arr2));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Filtered Array: <span id="filtered_arr"></span><br />
Array 2: <span id="arr2"></span><br />