假设我有一些简单的哈希,比如:
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()
,但我无法让它发挥作用!
答案 0 :(得分:1)
一个简单的循环可以做到:
var hash = {"a":1, "b":2, "c":3};
for (var i in hash) {
hash[i] *= 2;
}
console.log(hash);
然而,您可以将.forEach
与Object.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