一尘不染

删除数组中所有对象的属性

javascript

我想bad从数组中的每个对象中删除该属性。有没有比使用for循环并从每个对象中删除它更好的方法了?

var array = [{"bad": "something", "good":"something"},{"bad":"something", "good":"something"},...];

for (var i = 0, len = array.length; i < len; i++) {
  delete array[i].bad;
}

似乎应该有一种使用方式prototype,或其他方式。我不知道。有想法吗?


阅读 556

收藏
2020-05-01

共1个答案

一尘不染

唯一的其他方法是修饰,实际上是循环。

例如 :

array.forEach(function(v){ delete v.bad });

笔记:

  • 如果要与IE8兼容,则需要forEach的垫片。正如您提到prototype一样,prototype.js也有一个shim。
  • delete是最糟糕的“优化杀手”之一。使用它经常会破坏应用程序的性能。如果您要真正删除属性,则无法避免,但是通常可以将属性设置为,undefined或者仅构建不带属性的新对象。
2020-05-01