使用push从数组数组获取值

时间:2018-12-07 12:42:57

标签: javascript

我想从数组数组中获取值,但是我很难做到这一点。 我有以下内容:

var id = 1; //value I want to use for the search 
var _restrictions = [[1, 2], [2, 4], [5, 1], [1, 6]]; //arrays that I want to check
var arrVal = [];

通过使用ID,我想检索ID退出的数组内的所有值,并将它们存储在数组“ arrVal”中。

例如:

_restrictions = [[1, 2], [2, 4], [5, 1], [1, 6]];
//arrVal will be: [2, 5, 6], because the id existing inside the arrays [1,2], 
//[5,1] and [1,6]

“ _ restrictions”数组是包含限制的数组的数组。它们是独立的值(第一个不是索引或id)。 我该怎么办?

谢谢!

2 个答案:

答案 0 :(得分:0)

编辑:在问题编辑后更新代码。

该问题缺乏明确性。我假设您要过滤其中包含id的子数组,即包含值1

let id = 1; //value I want to use for the search 
let _restrictions = [[1, 2], [2, 4], [5, 1], [1, 6]];

let arrVal = _restrictions.filter((item) => {
        return item.includes(id);
});

let new_array = arrVal.concat.apply([], arrVal).filter(x => x !== id);

console.log(new_array);
// [2, 5, 6]

答案 1 :(得分:0)

这是一个适用于任何大小的嵌套数组的版本。它返回一个不包含id的所有值的扁平数组。

var id = 1; 
var _restrictions = [[1, 2, 9], [2, 4], [5, 1], [1, 6]];

var arrVal = _restrictions.reduce((acc, c) => {

  // Find the index of the id in each nested array
  const i = c.findIndex(arr => arr === id);

  // If it exists, splice it out and add it
  // to the accumulator array
  if (i > -1) {
    c.splice(i, 1);
    acc.push(...c);
  }
  return acc;
}, []);

console.log(arrVal);