迭代嵌套数组并提供对每个索引的访问

时间:2016-03-22 21:43:02

标签: javascript arrays indexing

我正在阅读有关Javascript Arrays的课程,我们必须了解undercoreJS方法的一些内容。我需要为_.each方法编写一个函数,它允许我迭代单个数组并返回一个包含每个值的索引的修改后的嵌套数组。 例如:

var myArray = ['a', 'b', 'c'];

在myArray上调用每个方法之后,新数组应如下所示:

myArray = [ [ 'a', 0 ], [ 'b', 1 ], [ 'c', 2 ] ];

我一直在google上搜索一天,但没有找到任何特定于此任务的内容。坚持并需要一些帮助!谢谢。

4 个答案:

答案 0 :(得分:2)

_.each遍历您的数组并具有以下签名

function(value, index, array)

让我们看看它是如何完成的......

var result = [];
_.each(myArray, function(value, index, array){
  result.push([value, index]); // <= does the work
}

这不是理想的方式(您应该使用map),但会说明每种方法的工作原理。

祝你好运

答案 1 :(得分:1)

您可以使用Array.prototype.reduce()函数

执行以下操作
var myArray = ['a', 'b', 'c'];
var result = myArray.reduce(function(a,b,i){ 
 return (a.push([b,i]), a)
},[]);
console.log(result); // [['a',0],['b',1],['c',2]];

或者@bergi说你也可以用Array.prototype.map()

来做
var myArray = ['a', 'b', 'c'];
var result = myArray.map(function(itm,i){ 
 return [itm,i];
});
console.log(result); // [['a',0],['b',1],['c',2]];

答案 2 :(得分:1)

只需使用Array#map()

  

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

var myArray = ['a', 'b', 'c'],
    result = myArray.map(function (a, i) {
        return [a, i];
    });

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

答案 3 :(得分:1)

如果你正在学习_.each方法,你可以这样做

var myArray = ['a', 'b', 'c'];

_.each(myArray, function (e, i) {
    myArray[i] = [e, i];
});

document.write(JSON.stringify(myArray));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

但是对于你的情况更好地使用_.map函数