如何从ES6中的对象列表中过滤出每个键?有了这个原始图片(此列表中可以有很多):
[{"x": 0,
"y": 0,
"width": 10,
"frame_variables": [{"lookup_type": null,"lookup_id": null}]
}]
我要退货:
[{"x": 0,
"y": 0,
"width": 10
}]
我在想列出其中一些内容,但不确定语法:
displayFrames: function () {
return this.frames.filter(e => e.key !== 'frame_variables')
}
有什么想法吗?
答案 0 :(得分:3)
let array = [{"x": 0,
"y": 0,
"width": 10,
"frame_variables": [{"lookup_type": null,"lookup_id": null}]
}];
let result = array.map(({ frame_variables, ...rest }) => ({ ...rest }));
console.log(result);
您需要使用map函数来转换数组中的所有元素。使用destructuring,您可以将frame_variables
键与对象的其余部分分开,因此只需返回没有该键的新对象即可。
答案 1 :(得分:2)
过滤用于从数组中删除整个元素。您可以遍历数组并为每个数组调用delete
。
for (var i = 0, len = array.length; i < len; i++) {
delete array[i].frame_variables;
}
答案 2 :(得分:2)
应该执行以下操作:
let data = {
"x": 0,
"y": 0,
"width": 10,
"frame_variables": [{
"lookup_type": null,
"lookup_id": null
}]
};
const filterAttribute = (obj, keyToFilterOut) => (Object.keys(obj)).reduce((filteredObj, key) => {
if (keyToFilterOut !== key) {
filteredObj[key] = obj[key]
}
return filteredObj;
}, {});
console.log(filterAttribute(data, 'frame_variables'))
我的解决方案也不更改原始对象,而是选择完全创建一个新对象-如果您出于其他原因要保留数据的话,这非常好