在javascript中的map()中动态设置键?

时间:2015-05-13 04:39:00

标签: javascript arrays associative-array

所以我知道如何动态设置密钥:

var hashObj = {};
hashObj[someValue] = otherValue;

但我还没有看到关于map()的任何答案:

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

var hashObject = list.map(function(someValue) {
    return { someValue: 'blah' };
});

// should return: [ {'a': 'blah'}, {'b': 'blah'}, {'c': 'blah'} ];

我知道我可以在for循环等中执行此操作,但仅在使用map()的javascript中这是不可能的吗?

2 个答案:

答案 0 :(得分:5)

您需要将someValue作为其值进行评估。如果使用对象表示法,它将按字面解释为字符串。

您可以使用临时对象来实现您想要的目标:

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

var hashObject = list.map(function(someValue) {
    var tmp = {};
    tmp[someValue] = 'blah';
    return tmp;
});

答案 1 :(得分:0)

通常,'map()'方法用于从每个返回值中获取新数组。 在您的情况下,我建议使用forEach()。

var list = ['a','b','c'];
var hashObject = _.object( list ); // { a: undefined, b: undefined, c: undefined }
hashObject = _.mapObject( hashObject, function( val, key ) {
    return 'blah';
});

或者使用underscore.js库的object()

::-webkit-scrollbar { 
    display: none; 
}

然后,Array.prototype.map仅用于获取新的“数组”而不是“对象”。