我想从数组中的每个对象中删除坏属性。有没有比使用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;
}

似乎应该有一种方法来使用原型之类的。我不知道。想法吗?


当前回答

只有当你的对象相似时,使用原型的解决方案才有可能:

function Cons(g) { this.good = g; }
Cons.prototype.bad = "something common";
var array = [new Cons("something 1"), new Cons("something 2"), …];

但它很简单(和O(1)):

delete Cons.prototype.bad;

其他回答

你可以这样做,更可读,而不是期望提高,因为没有找到关键字:

data.map((datum) => {
  return {
    'id':datum.id,
    'title':datum.login
  }
});

ES6中最短的方法:

array.forEach(e => {delete e.someKey});

如果你使用的是underscore.JS库:

let asdf = [{"asd": 12, "asdf": 123}, {"asd": 121, "asdf": 1231}, {"asd": 142, "asdf": 1243}]


_.map(asdf, function (row) {
    return _.omit(row, ['asd'])
})

数组var =[{“坏”:“东西”,“好”:“东西”},{“坏”:“东西”,“好”:“东西”}); const cleanArray = array.map(item=>{ 删除item.bad 返回项目 }) console.log (cleanArray)

数组var =[{“坏”:“东西”,“好”:“东西”},{“坏”:“东西”,“好”:“东西”}); Var结果= array.map(函数(项){ 返回{good: item["good"]} }); console.log (JSON.stringify(结果));