我在Js中有两个对象数组
a = [{"photoId":"1","albumId":"121"},{"photoId":"2","albumId":"131"},{"photoId":"3","albumId":"131"}] ;
b = [{"photoId":"2","albumId":"131"}];
我想从一个对象数组中删除b对象数组。所以输出应该是
c = [{"photoId":"1","albumId":"121"},{"photoId":"3","albumId":"131"}];
在数组的情况下很容易实现,但如何对数组对象做同样的事情..
答案 0 :(得分:2)
看起来像对象数组更难,但实际上与'普通数组'相同。只需检查其内容。您应该循环数组以检查对象是否相同。然后像这样使用Array.slice():
for (var i = a.length - 1; i >= 0; i--) //always use a reversed loop if you're going to remove something from a loop
{
if (a[i].photoId == b[0].photoId &&
a[i].albumId == b[0].albumId) // if the content is the same
{
a.splice(i, 1); // remove the item from 'a'
}
}
BTW delete-statement使数组中的项为空,splice将其完全删除,因此数组的长度变小。
请注意;如果您正在处理同一对象的引用,则可以使用以下条件:
if (a[i] == b[0])
当然,如果'b'中有更多项目,你也会建立一个双循环。
希望这有帮助。
答案 1 :(得分:-3)
只需使用del关键字:
delete arr["key"];