使用特定索引

时间:2015-06-22 08:47:16

标签: javascript arrays

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

var data = [
    'h', 'e', 'l', 'l', 'o', ' '
];
var indices = [
    4, 0, 5, 0, 1, 2, 2
];

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

['o', 'h', ' ', 'h', 'e', 'l', 'l']

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

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

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

3 个答案:

答案 0 :(得分: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);




  

map()方法创建一个新数组,其中包含调用a的结果   为此数组中的每个元素提供了函数。

答案 1 :(得分:2)

您也可以使用地图

var newArray = indices.map(function(i){
    return data[i]
});

答案 2 :(得分:0)

您可以使用while循环:



var data = [
  'h', 'e', 'l', 'l', 'o', ' '
];
var indices = [
  4, 0, 5, 0, 1, 2, 2
];
var l = indices.length,
  newArray = [];
while (l--)
  newArray[l] = data[indices[l]];
console.log(newArray);