【发布时间】:2019-01-31 02:49:19
【问题描述】:
我正在尝试使用reduce 将嵌套数组转换为对象。
我要转换var bookprice = [["book1", "$5"], ["book2", "$2"], ["book3", "$7"]];
到
var bookpriceObj = {
"book1": "$5",
"book2": "$2",
"book3": "$7"
};
这是我尝试过的
var bookprice = [["book1", "$5"], ["book2", "$2"], ["book3", "$7"]];
bookpriceObj = {};
bookprice.reduce(function(a, cv, ci, arr){
for (var i = 0; i < arr.length; ++i)
bookpriceObj [i] = arr[i];
return bookpriceObj ;
})
但下面的结果不是想要的结果
{
["book1", "$5"]
["book2", "$2"]
["book3", "$7"]
}
【问题讨论】:
-
在我看来,您正在尝试像使用 for 循环一样使用 reducer,但这是一个不同的概念。不要引用它之外的变量,所有的东西都已经在 reducer 的参数中了。同一个累加器逐个元素地传递整个事物,并且您将事物“收集”到它(或总和或您拥有的东西)。但在这种情况下,一个简单的 for 循环可能会更快。
标签: javascript arrays javascript-objects