JQuery:如何将函数应用于哈希值?

时间:2014-05-28 08:45:45

标签: javascript jquery

假设我有一些简单的哈希,比如:

var hash = {"a":1, "b":2, "c":3}

我想通过将一些函数应用于上面的哈希值来创建一个新哈希,例如:

var new_hash = {"a":2, "b":4, "c":6}

我知道这样做,例如,在 ruby​​

new_hash = hash.inject({}) { |h, (k, v)| h[k] = 2*v; h }

...但我无法找出JQuery中等效操作的正确语法!从我在网上看到的内容来看,我认为答案可能涉及使用.makeArray().map(),但我无法让它发挥作用!

4 个答案:

答案 0 :(得分:1)

一个简单的循环可以做到:

var hash = {"a":1, "b":2, "c":3};
for (var i in hash) {
    hash[i] *= 2;
}
console.log(hash);

然而,您可以将.forEachObject.getOwnPropertyNames结合使用(将键名称作为数组处理),如下所示:

var hash = {"a":1, "b":2, "c":3};
Object.getOwnPropertyNames(hash).forEach(function(name) {
    hash[name] *= 2;
});
console.log(hash);

答案 1 :(得分:1)

你可以这样做:

var hash = {"a":1, "b":2, "c":3};
var new_hash = {};
$.each( hash, function( key,val ) {
    new_hash[key] = 2 * val;
});
console.log(new_hash); //Object { a=2, b=4, c=6}

var hash = {"a":1, "b":2, "c":3};
var new_hash = $.extend.apply(null, $.map(hash, function(val,idx) { var h = {}; h[idx] = val * 2; return h }));
console.log(new_hash);

答案 2 :(得分:1)

看看这个jsfiddle。 打开开发控制台以查看输出

var hash = {"a":1, "b":2, "c":3}
var new_hash = {};
jQuery.each(hash, function(idx){ 
    console.log(idx);
    new_hash[idx] = this*2;})
console.log(new_hash);

答案 3 :(得分:0)

我认为您正在寻找array.map功能。或者,如果你真的想要jQuery函数,它的jQuery.map