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 arrayJavaScript有一个内置的 有几种方法可以附加数组。首先,使用将数组作为单个参数调用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]);
}