在$ .each中更新对象数组

时间:2013-12-01 05:57:23

标签: javascript jquery

为什么我不能这样做:

var x = [
    { 'z': 3, y: [1,2,3,4]},
    { 'z': 5, y: [2,2,2,2]},
    { 'z': 6, y: [1,4,3,5]},
    { 'z': 8, y: [1,1,3,4]},
];

$(x).each(function() {
    console.log(this.z);
    $(this.y).each(function(i, n) {
       n = n * 2;
    });
});

// expected result from the first iteration would be: 
{ 'z': 3, y: [2,4,6,8]}

我想更新n,但不起作用。可以这样做,如果是这样的话?

2 个答案:

答案 0 :(得分:1)

当您执行n = n * 2;时,您只是在n处理程序中更新局部变量each的值。

$(x).each(function (_, obj) {
    console.log(this.z);
    this.y = $.each(this.y, function (i, n) {
        obj.y[i] = n * 2;
    })
})

演示:Fiddle

答案 1 :(得分:0)

试试这个:

$(x).each(function() {
    console.log(this.z);
    var y = this.y;
    $(y).each(function(i, n) {
        y[i] *= 2;
    });
});