按索引数组过滤数组

rvi*_*lta 2 javascript arrays

我有第一个值数组和第二个索引数组.我想过滤第一个数组,只返回第二个数组中有索引的值.

所以,给定:

arr1 = [4775453877338112, 5901353784180736, 6605041225957376]
arr2 = [0,2]
Run Code Online (Sandbox Code Playgroud)

我想回复:

output = [4775453877338112, 6605041225957376]
Run Code Online (Sandbox Code Playgroud)

谢谢.对于奖励积分,为什么以下不起作用?

var output = arr1.filter( (item) => arr1.indexOf(item) in arr2 === true )

抱歉,如果这个简单的问题与此重复:基于索引数组的过滤器数组,但是下划线让我失望.

gur*_*372 8

对于奖励积分,为什么以下不起作用?

因为你正在检查,如果指数出现在arr2,而不是项目本身.

只需简单地使用一个 map

var output = arr2.map( s => arr1[s] );
Run Code Online (Sandbox Code Playgroud)

演示

var arr1 = [4775453877338112, 5901353784180736, 6605041225957376];
var arr2 = [0,2];
var output = arr2.map( s => arr1[s] );
console.log( output );
Run Code Online (Sandbox Code Playgroud)