Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更新对象属性数组值?_Javascript_Javascript Events - Fatal编程技术网

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

Javascript 如何更新对象属性数组值?,javascript,javascript-events,Javascript,Javascript Events,如果我将对象定义为: var myObj={}; 然后,我用以下内容更新此对象: myObj['fruit']=['apple', 'orange']; 稍后,我想在myObj['fruit']中添加“[香蕉,甜瓜]”,这是对myObj的更新 ['apple','orange','banana','melon'] 在我的例子中,更新myObj的'fruit'属性值最优雅的方法是什么?这就是通过附加一个新数组来更新数组 ------编辑---- 我需要一种将数组作为一个变量附加的方法,而不是

如果我将对象定义为:

var myObj={};
然后,我用以下内容更新此对象:

myObj['fruit']=['apple', 'orange'];
稍后,我想在
myObj['fruit']
中添加“[香蕉,甜瓜]”,这是对
myObj
的更新

['apple','orange','banana','melon']
在我的例子中,更新myObj的'fruit'属性值最优雅的方法是什么?这就是通过附加一个新数组来更新数组

------编辑----


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

JavaScript有一个内置的

有几种方法可以附加数组。首先,使用将数组作为单个参数调用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不会修改原始数组,因此如果有其他引用,它们可能会丢失:

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

我建议通过执行以下操作来迭代要推送的数组项:

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

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

:)。。。在中是个坏主意。。。最好迭代
for(var i=0,l=array.length,你能为…扩展你的观点吗?我看不出添加到
数组中的属性有任何问题。当你为…在
时,prototype
会显示出来——虽然改变这些原型不是最好的主意,但是可以做一些事情,比如填写
.indexOf()
或其他在所有浏览器中都不存在的较新数组函数…请参见此示例:-因此,考虑到数组具有长度和数字属性,您不应该在数组上使用
for…in
,啊,好吧,如果我们添加新原型,这是适用的…好吧,也许我应该开始使用您的方式。很好的共享!:)还有,仅供参考-一般情况下,
用于。。。在
中还应该使用更好的引用:因此,更新后的最终数组可以通过myObj['fruit']=[].push.apply(myObj['fruit],toAppend)获得;我猜。如果使用push,它将返回数组的新长度或添加的项目的#
push()
会影响它要推到的数组,所以你不需要将它分配给任何东西……mplungjan的建议也很好:@Leem-这建议
.push.apply()
就像我答案的第二部分:)
var newObj = ["banana", "melon"];

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