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

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


当前回答

在我看来,这是最简单的变体

array.map(({good}) => ({good}))

其他回答

如果你使用underscore.js:

var strippedRows = _.map(rows, function (row) {
    return _.omit(row, ['bad', 'anotherbad']);
});

这对我来说很有效!

export function removePropertiesFromArrayOfObjects(arr = [], properties = []) {
return arr.map(i => {
    const newItem = {}
    Object.keys(i).map(key => {
        if (properties.includes(key)) { newItem[key] = i[key] }
    })
    return newItem
})
}

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

在ES6中,你可以分解每个对象来创建一个没有命名属性的新对象:

const newArray = array.map(({dropAttr1, dropAttr2, ...keepAttrs}) => keepAttrs)

在我看来,这是最简单的变体

array.map(({good}) => ({good}))