[英]remove object from object array
您好,我试图从拥有的对象数组中删除对象,然后创建另一个新对象(我正在使用$ .map()创建新对象)
要从object(x)中删除此对象,它是object.number必须与array(y)中数字之一匹配
以下代码有效,但我只删除了具有object.number = 40 DEMO的对象
代码:
var x =[ //this is the object
{name : 'mark' , number : '10' , color:'green'},
{name : 'jeff' , number : '15' , color:'blue'} ,
{name : 'joy' , number : '30' , color:'yellow'},
{name : 'mick' , number : '15' , color:'red'},
{name : 'mick' , number : '40' , color:'black'}] ;
var y =['40','15']; // i need to remove all object.number that match the
// number in this array
var newObject = $.map(x ,function(index, value){
for(i in y){
if(index.number == y[i])
{return null ; }
else{
return index;
}
}
});
console.log(newObject);
上面的代码仅删除了object.number中包含40的对象,我该如何进行这项工作?
这就是你想要的:
var newObject = $.map(x ,function(index, value){
for(i in y){
if(index.number == y[i])
return null;
}
return index;
});
console.log(newObject);
和jsFiddle 。 顺便说一句:我认为对数组使用for(i in y)
不是一个好习惯(数组可能具有其他属性)。 您应该使用标准:
var l = y.length;
for(var i = 0; i < l; i++){
/* the other code */
}
注意长度缓存。
试试这个代码:
var newObject = $.map(x, function(index, value){
return (y.indexOf(index.number) != -1) ? null : index;
});
尝试如下更改功能,
var newObject = $.map(x, function(value, index) {
if ($.inArray(value.number, y) == -1) {
return value;
} else {
return null;
}
});
使用以下内容:
var newObject = $.map($.makeArray(x), function(index, value){
return y.indexOf(index.number) != -1 ? null : index;
});
$.makeArray()
不是必需的,但如果阵列中可以包含无序数据,则建议使用。
我在这里更新了你的小提琴。 基本上,您并没有检查delete数组中的每个值。
var x =[
{name : 'mark' , number : '10' , color:'green'},
{name : 'jeff' , number : '15' , color:'blue'} ,
{name : 'joy' , number : '30' , color:'yellow'},
{name : 'mick' , number : '15' , color:'red'},
{name : 'mick' , number : '40' , color:'black'}] ;
var y =['40','15'];
var newObject = $.map(x ,function(index, value){
var valid = true;
for(var i = 0; i < y.length; i++){
if(index.number == y[i])
valid = false;
}
if(valid)return index;
else return null;
});
console.log(newObject);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.