如何更改对象数组中元素的值?下面我的示例从数组中删除一个对象,然后更改对象其余部分中的元素(数字) - 删除部分工作正常但另一部分没有 -
我有jsFiddle
代码:
var x =[
{name : 'myname' , number : '10' , color:'green'},
{name : 'yourname' , number : '15' , color:'blue'}
];
$.each(x , function(index ,value) {
if(value.number == '10'){
x.splice(index , 1) ;
}
else {
x[i].number = '20' ;
}
console.log(x) ;
});
答案 0 :(得分:2)
您可以使用.map()
构建一个像这样的新数组
var x =[{name : 'myname' , number : '10' , color:'green'},
{name : 'yourname' , number : '15' , color:'blue'}] ;
var newX = $.map(x , function(obj ,index){
if(obj.name == 'yourname'){
return null;
}else{
obj.number = '20';
return obj;
}
});
console.log(newX);
答案 1 :(得分:0)
您似乎可以使用$.map()
为您执行此操作。
var new_array = $.map(x, function (el) {
if (el.number === '10') {
// remove this
return null;
} else {
// transform into something else
el.number = '20';
return el;
}
});
请注意,这会创建一个新数组。您可以通过将返回值分配给旧变量来覆盖旧数组:
x = $.map(x, function (el) { });
答案 2 :(得分:0)
删除正在循环的数组元素时,需要递减循环计数器。我不确定是否可以使用jQuery的each()轻松完成。你可以使用普通的for循环:
for(var i = 0; i < x.length; i++) {
var value = x[i];
if(value.number == '10') {
x.splice(i, 1);
i--;
}
else {
value.number = '20';
}
console.log(x);
}
这是一个演示 - http://jsfiddle.net/bFYj7/
答案 3 :(得分:0)
试试这个。
var x =[{name : 'myname' , number : '10' , color:'green'},
{name : 'yourname' , number : '15' , color:'blue'}] ;
$(x) . each(function(index ,value){
if(value.number != undefined && value.number == '10'){
x.splice(index , 1) ;
}else {
if(value.number != undefined){
value.number= '20' ;
}
}
console.log(x) ;
});
这是demo
对该对象索引使用未定义检查。