查找不包含数字的子数组的索引

时间:2017-06-14 21:18:27

标签: javascript arrays multidimensional-array

var array = [[2,3,4],[4,5,6],[2,3,9],[7,8,1]];
var number = 3;

如果我有这个嵌套数组和这个变量,我该如何返回存在数字的子数组的索引。所以最终的结果应该是1和3。

4 个答案:

答案 0 :(得分:1)

尝试:

array.reduce((acc, subArr, i) => {
  if (!subArr.includes(number)) {
    acc.push(i);  
  }
  return acc;
}, [])

答案 1 :(得分:1)

使用Array.prototype.forEach()Array.prototype.indexOf()函数的解决方案:

var arr = [[2,3,4],[4,5,6],[2,3,9],[7,8,1]],
    number = 3,
    result = [];
    
arr.forEach(function(v,i){
    if (v.indexOf(number) === -1) result.push(i);
});

console.log(result);

答案 2 :(得分:0)

function X(a){
  var r = [];
  for(var i = o ; i < a.length; i++)
    for(var j = o ; j < a[i].length; i++)
        if(a[i][j] === number) 
          r.push(i);
  return r;
}

我认为应该这样做。我刚刚在这里写了所以可能有一些语法错误

答案 3 :(得分:0)

由于问题超级不一致,如果您希望的子数组的索引具有该数字,请执行以下操作:

var foundIndices = [];
for(var y = 0;y < array.length; y++) {
    for(var x = 0;x < array[y].length; x++) {
        if(array[y][x] == number) {
            foundIndices[foundIndices.length] = y;
        }
    }
}

否则,请执行以下操作:

var foundIndices = [];
var found = false;
for(var y = 0;y < array.length; y++) {
    found = false;
    for(var x = 0;x < array[y].length; x++) {
        if(array[y][x] == number) {
            found = true;
        }
    }
    if(found == false) {
        foundIndices[foundIndices.length] = y;
    }
}