我会保持简单。假设我有一个这样的对象:
let myObj = {
name:{
value: "John",
type: "contains"
},
age:{
value: "5",
type: "contains"
}
}
如何创建一个包含主键但值仅为其嵌套对象的value
的新对象,如下所示:
let myNewObj = {
name: "John",
age: "5"
}
提前谢谢。
如果只想提取每个对象的value
密钥,可以执行以下操作:
let myObj = {
name:{
value: "John",
type: "contains"
},
age:{
value: "5",
type: "contains"
}
}
let newObj = {}
for (const key in myObj) {
newObj[key] = myObj[key].value;
}
console.log(newObj);
// {
// age: "5",
// name: "John"
// }
将对象转换为其条目数组,并通过它映射以返回[key,value]
然后使用Object.fromEntries
转换为新对象
let myObj = {
name:{
value: "John",
type: "contains"
},
age:{
value: "5",
type: "contains"
}
}
let myNewObj = Object.fromEntries(Object.entries(myObj).map(([key,{value}])=>[key,value]))
console.log(myNewObj)
通常,为了能够根据映射函数转换对象属性的所有值,可以使用Object.entries
为每个属性制作一个[key, value]
数组的数组,然后使用Object.fromEntries
从这些数组中重建对象。您可以在该操作的中间提供一个通用转换函数,如下所示:
const transformValues = (obj, transform) =>
Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, transform(value)]));
您在特定情况下需要的转换函数将获取属性值(这是一个对象),并只返回其value
属性。像这样:({ value }) => value
(这很容易销毁。)
let myObj = {
name: {
value: "John",
type: "contains"
},
age: {
value: "5",
type: "contains"
}
}
const transformValues = (obj, transform) =>
Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, transform(value)]));
const result = transformValues(myObj, ({ value }) => value);
console.log(result);