从_.map()返回对象

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)

Emp*_*nal 7

您可以使用_.object()它将其重新转换为对象.

var regurgitate_cars = _.object(
    _.map(cars, function(value, key){
        return [key, value];
    })
);
Run Code Online (Sandbox Code Playgroud)

至于直接用它_.map,你必须重写map才能做到这一点.

  • 你需要'返回[key,value]`才能使这个工作......? (2认同)

And*_*ark 7

_.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)