从javascript数组对象中删除条目

时间:2011-07-31 18:12:33

标签: javascript jquery

我在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"}];

在数组的情况下很容易实现,但如何对数组对象做同样的事情..

2 个答案:

答案 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"];