我有两个数组,一个数据和一个索引:
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)
但我想知道是否有一种更简洁的方法,比如数组方法或特殊的构造函数?
您可以使用.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()方法创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数.