我想从数组数组中获取值,但是我很难做到这一点。 我有以下内容:
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)。 我该怎么办?
谢谢!
答案 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);