我正在阅读有关Javascript Arrays的课程,我们必须了解undercoreJS方法的一些内容。我需要为_.each方法编写一个函数,它允许我迭代单个数组并返回一个包含每个值的索引的修改后的嵌套数组。 例如:
var myArray = ['a', 'b', 'c'];
在myArray上调用每个方法之后,新数组应如下所示:
myArray = [ [ 'a', 0 ], [ 'b', 1 ], [ 'c', 2 ] ];
我一直在google上搜索一天,但没有找到任何特定于此任务的内容。坚持并需要一些帮助!谢谢。
答案 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
函数