![](/img/trans.png)
[英]what is the most efficient way to recreate object array by property names?
[英]What is the most efficient way of creating an object with a subset of properties, based on an array of property names in javascript?
在下面的示例中(它满足我的要求),我正在循环 object 的属性,并创建一个新的 object,它仅包含 selectedProperties 数组中的属性。
有没有更有效的方法来做到这一点? 我看过 Object 解构,但我不确定如果你有这样的结果属性数组,这将如何应用。
const bigObject = {
prop1: "value1",
prop2: "value2",
prop3: "value3",
prop4: "value4"
}
const selectedProperties = ['prop1', 'prop4'];
result = {};
Object.keys(bigObject).forEach((propertyName)=>{
if(selectedProperties.includes(propertyName)){
result[propertyName] = bigObject[propertyName];
}
});
console.log(result);
Output:
{
prop1: "value1",
prop4: "value4"
}
不要遍历所有Object.keys
然后过滤它们。 只需遍历您想要的属性,然后从 object 中提取它们 - 每个都在O(1)
时间内:
const result = selectedProperties.reduce((obj, prop) => {
obj[prop] = bigObject[prop];
return obj;
}, {});
只需遍历您选择的属性:
const bigObject = { prop1: "value1", prop2: "value2", prop3: "value3", prop4: "value4" } const selectedProperties = ['prop1', 'prop4']; let result = {}; selectedProperties.forEach(prop => { result[prop] = bigObject[prop]; }); console.log(result);
或者使用Object.fromEntries()
并映射 selectedProperties。
const result = Object.fromEntries(selectedProperties.map(prop => [prop, bigObject[prop]]));
您可以将新部件分配给 object 并在必要时过滤给定的属性。
const object = { prop1: "value1", prop2: "value2", prop3: "value3", prop4: "value4" }, keys = ['prop0', 'prop1', 'prop4'], result = Object.assign({}, ...keys.filter(Object.prototype.hasOwnProperty, object).map(k => ({ [k]: object[k] })) ); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.