JavaScript按键过滤数组

3

因此,一个例子可能是:

let a = [10,20,30,40,50,60,70,80];
let b = [1,2,6];
console.log([a[1], a[2], a[6]);

可以这样解释:获取a中在b索引位置上的对象。
我知道可以这样做:
const f = (a, b) => {
    let result = [];
    b.forEach(element => {
        result.push(a[element]);
    });
    return result;
}

但也许有更简洁的方法。

编辑:到目前为止,我能得到的最好结果是这样的。

a.filter((n, index)=>b.includes(index)));

但它并不相同,事实上如果b = [0,0,0],它不会返回[a[0],a[0],a[0]],而是[a[0]]

3个回答

7

使用 Array.map() 迭代数组 b,并返回数组 a 中对应的 index 的值:

const a = [10,20,30,40,50,60,70,80];
const b = [1,2,6];

const result = b.map(index => a[index]);

console.log(result);


4
全局的Array对象的.from方法能够让你将一个数组转换成一个新的数组,其方式与.map()类似。

let a = [10,20,30,40,50,60,70,80];
let b = [1,2,6];

let result = Array.from(b, n => a[n]);

console.log(result);

因为你想将b从索引转换为具有一对一关系的值,所以通常需要进行某种“映射”操作。


2
另一种方法可能是:

var out = [];
for(let x of b){
  out.push(a[x]);
}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接