我想从数组中的每个对象中删除坏属性。有没有比使用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 mapOut(sourceObject, removeKeys = []) {
const sourceKeys = Object.keys(sourceObject);
const returnKeys = sourceKeys.filter(k => !removeKeys.includes(k));
let returnObject = {};
returnKeys.forEach(k => {
returnObject[k] = sourceObject[k];
});
return returnObject;
}
const array = [
{"bad": "something", "good":"something"},
{"bad":"something", "good":"something"},
];
const newArray = array.map(obj => mapOut(obj, [ "bad", ]));
它仍然不是完美的,但是保持了某种程度的不可变性,并且可以灵活地命名您想要删除的多个属性。(建议欢迎)
外面有很多图书馆。这完全取决于你的数据结构有多复杂(例如,考虑深度嵌套的键)
我们喜欢对象字段,因为它也适用于深度嵌套的层次结构(build for api fields参数)。下面是一个简单的代码示例
// const objectFields = require('object-fields');
Const array = [{bad: 'something', good: 'something'}, {bad: 'something', good: 'something'}];
const retain = objectfields . retain (['good']);
保留(数组);
console.log(数组);
// => [ { 好:“东西”},{好:‘东西’}]
.as-console-wrapper {max-height: 100% !重要;上图:0}
< script src = " https://bundle.run/object-fields@2.0.19 " > < /脚本>
免责声明:我是对象字段的作者