从JavaScript数组中删除值
我有两个JavaScript数组(比如从JavaScript数组中删除值,javascript,Javascript,我有两个JavaScript数组(比如newvalue和oldvalue) 这两个数组包含一些公共值。我想从数组newvalue中删除oldvalue中存在的所有值 示例:假设newvalue的值为1,2,3,4,oldvalue的值为2,3,我想从newvalue中删除2,3,newvalue的值应为1,4 这必须在JavaScript中完成 将此视为新值 [ {"patentid":1, "Geography":"china", "type":"utility", "Assignee":"a
newvalue
和oldvalue
)
这两个数组包含一些公共值。我想从数组newvalue
中删除oldvalue
中存在的所有值
示例:假设newvalue
的值为1,2,3,4,oldvalue
的值为2,3,我想从newvalue
中删除2,3,newvalue
的值应为1,4
这必须在JavaScript中完成
将此视为新值
[
{"patentid":1,
"Geography":"china",
"type":"utility",
"Assignee":"abc"
},
{"patentid":2,
"Geography":"aus",
"type":"utility",
"Assignee":"abc"
},
{"patentid":3,
"Geography":"aus",
"type":"utility",
"Assignee":"abc"
},
{"patentid":4,
"Geography":"china",
"type":"utility",
"Assignee":"xyz"
}
]
consider this as old value
[{"patentid":3,
"Geography":"aus",
"type":"utility",
"Assignee":"abc"
},
{"patentid":4,
"Geography":"china",
"type":"utility",
"Assignee":"xyz"
}]
现在我必须删除newvalue中专利id为3和4的对象,如果它实际上是公共对象(即o1==o2为真),那么您可以执行如下操作:
var o1 = { id: 1 };
var o2 = { id: 2 };
var o3 = { id: 3 };
var o4 = { id: 4 };
var newvalue = [o1, o2, o3, o4];
var oldvalue = [o2, o3];
newvalue = newvalue.filter(function(e) { return oldvalue.indexOf(e) === -1 });
您可以使用
Array.filter
和Array.indexOf
函数解析它。
您的示例可以这样解决:
[1,2,3,4].filter(function(e){
return [2,3].indexOf(e) === -1;
});
您也可以使用类似的库,它有很多函数来解决这些类型的数组操作。对象是否总是数字?否。具有多个字段的json对象是相同的对象,还是“相似”的对象?这必须在JavaScript中完成。你还想用什么语言?多少钱?只是开玩笑。。。但这是一种说“你自己试过了吗?如果是,请展示你的努力……”[1,2,3,4]。过滤器(函数(e){return[2,3]。indexOf(e)==-1});是的,我对stackoverflow是新手,现在我想我做得更好了thanks@NithinQ既然他正确地回答了原来的问题,他现在应该为你的问题的新版本提供另一个解决方案?你打算再改变你的问题多少次?在任何情况下,此答案中提供的原则将适用于您的修订问题。为什么不接受它并继续。如果它们只是“相似”对象,则必须定义它们何时“相同”,并使用自己的“indexOf”(或“contains”)在过滤器中使用。