如何将对象数组中的数组类型属性转换为字符串?
如何将对象数组中值为数组的属性转换为对应字符串值?
给定如下原始对象数组:
let peopleDetails = [ { name: "raj", favCar: [{ name: "audi", color: "white" }], favFood: [{ color: "brown", name: "Idli" }], }, { name: "deepak", place: "India", favPlace: [{ name: "Tajmahal" }] }, ];
需要将其中值为数组的属性(如favCar、favFood)转换为数组内对象的name属性值,得到如下结构:
let peopleDetails = [ { name: "raj", favCar: "audi", favFood: "Idli" }, { name: "deepak", place: "India", favPlace: "Tajmahal" }, ];
解决方案
可以通过Array.map()、Object.entries()和Object.fromEntries()组合实现转换:
const peopleDetails = [ { name: "raj", favCar: [{ name: "audi", color: "white" }], favFood: [{ color: "brown", name: "Idli" }], }, { name: "deepak", place: "India", favPlace: [{ name: "Tajmahal" }] }, ]; const transformedData = peopleDetails.map(person => { return Object.fromEntries( Object.entries(person).map(([key, value]) => { // 筛选出值为非空数组且首元素含name属性的字段,替换为name值 if (Array.isArray(value) && value.length > 0 && 'name' in value[0]) { return [key, value[0].name]; } // 其余字段保持原数值 return [key, value]; }) ); }); console.log(transformedData);
逻辑说明
- 用
map遍历原数组中的每个对象; - 对每个对象,通过
Object.entries()将键值对转为可遍历的数组; - 遍历每个键值对,判断属性值是否为非空数组且首元素包含
name属性,满足则替换为该name字符串; - 最后用
Object.fromEntries()将处理后的键值对数组重新转为对象。
内容的提问来源于stack exchange,提问作者Nandha Kumar
相关产品推荐
相关产品推荐

