如何更新对象属性数组值?

时间:2011-06-03 07:38:32

标签: javascript javascript-events

如果我将对象定义为:

var myObj={};

然后,我用以下内容更新此对象:

myObj['fruit']=['apple', 'orange'];

稍后,我想将“ [banana,melon] ”附加到myObj['fruit'],即更新myObj

['apple','orange','banana','melon']

在我的情况下更新myObj的'fruit'属性值的最优雅方法是什么?这是通过附加新数组来更新数组。

-------- EDIT -------

我需要一种方法将数组附加为一个变量,而不是提取附加数组的每个元素并推送。,例如oldArray附加newArray = final数组

3 个答案:

答案 0 :(得分:1)

JavaScript内置了Array.push()

myObj["fruit"].push( 'banana', 'melon' );

有几种方法可以附加数组。首先,使用apply()将数组作为单独的参数调用push:

var toAppend = ['banana', 'melon'];
// note [].push is just getting the "push" function from an empty array
// the first argument to "apply" is the array you are pushing too, the
// second is the array containing items to append
[].push.apply( myObj["fruit"], toAppend );

此外,您可以concat()数组,但是concat不会修改原始数组,因此如果您有其他引用,它们可能会丢失:

myObj["fruit"] = myObj["fruit"].concat( toAppend );

答案 1 :(得分:1)

如果您不想推,那么concat:)

答案 2 :(得分:-1)

我建议迭代你要推送的数组项:

var newObj = ["banana", "melon"];

for (var i in newObj)
{
   myObj['fruit'].push(newObj[i]);
}

:)