使用特定索引从另一个创建数组

Ara*_*hor 2 javascript arrays

我有两个数组,一个数据和一个索引:

var data = [
    'h', 'e', 'l', 'l', 'o', ' '
];
var indices = [
    4, 0, 5, 0, 1, 2, 2
];
Run Code Online (Sandbox Code Playgroud)

我想创建一个第三个数组,使用data按顺序指示的单元格indices,所以它在这里:

['o', 'h', ' ', 'h', 'e', 'l', 'l']
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过简单的循环轻松完成:

var newArray = new Array(indices.length);
for (var i in indices) {
    var index = indices[i];
    newArray.push(data[index]);
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种更简洁的方法,比如数组方法或特殊的构造函数?

Ale*_* T. 5

您可以使用.map,像这样

var data = [
    'h', 'e', 'l', 'l', 'o', ' '
];

var indices = [
    4, 0, 5, 0, 1, 2, 2
];

var res = indices.map(function (el) {
  return data[el];
});

console.log(res);
Run Code Online (Sandbox Code Playgroud)

map()方法创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数.