Tho*_*ggi 5 javascript arrays object map underscore.js
因此_.map()
下划线中的函数不会返回一个对象,但它会占用它们.有没有办法让它返回完全相同的对象?
var _ = require("underscore");
var cars = {
"mom": {
"miles": "6",
"gas": "4"
},
"dad": {
"miles": "6",
"gas": "4"
}
}
var regurgitate_cars = _.map(cars, function(value, key){
return value;
});
/*
[ { miles: '6', gas: '4' }, { miles: '6', gas: '4' } ]
*/
var regurgitate_cars = _.map(cars, function(value, key){
var transfer = {};
transfer[key] = value;
return transfer;
});
/*
[ { mom: { miles: '6', gas: '4' } },
{ dad: { miles: '6', gas: '4' } } ]
*/
Run Code Online (Sandbox Code Playgroud)
您可以使用_.object()
它将其重新转换为对象.
var regurgitate_cars = _.object(
_.map(cars, function(value, key){
return [key, value];
})
);
Run Code Online (Sandbox Code Playgroud)
至于直接用它_.map
,你必须重写map才能做到这一点.
_.map()
将始终返回一个数组,但您可以获得以下行为_.reduce()
:
var regurgitateCars = _.reduce(cars, function(memo, value, key) {
memo[key] = value;
return memo;
}, cars);
Run Code Online (Sandbox Code Playgroud)
请注意,这将修改并返回原始对象,如果您想要一个副本,您可以提供一个空对象作为第三个参数,它将memo
在第一次调用匿名函数时用作参数:
var regurgitateCars = _.reduce(cars, function(memo, value, key) {
memo[key] = value;
return memo;
}, {});
Run Code Online (Sandbox Code Playgroud)