javascript找到数组中的所有对象并将其转换为一个数组到另一个数组

javascript找到数组中的所有对象并将其转换为一个数组到另一个数组,javascript,Javascript,我有一个数组列表,里面有地址和细节之类的对象 输入 我想迭代这个数组并转换所有内部对象,使其看起来像下面这样 预期结果 在这种情况下,循环处理整个数组并检查prop是否不是对象,然后在新对象中复制key\value。如果道具是一个对象,只需将此对象合并到新对象。然后您应该返回一个新对象 var-arr=[ {id:1,姓名:“abc”,地址:{街道:“一些文本1”,pin:879888,州:“我的州1”},详情:{章节:“A”,卷:12,分支机构:“CSE”}, {id:2,姓名:“xyz”,

我有一个数组列表,里面有地址和细节之类的对象

输入 我想迭代这个数组并转换所有内部对象,使其看起来像下面这样

预期结果
在这种情况下,循环处理整个数组并检查prop是否不是对象,然后在新对象中复制key\value。如果道具是一个对象,只需将此对象合并到新对象。然后您应该返回一个新对象

var-arr=[
{id:1,姓名:“abc”,地址:{街道:“一些文本1”,pin:879888,州:“我的州1”},详情:{章节:“A”,卷:12,分支机构:“CSE”},
{id:2,姓名:“xyz”,地址:{街道:“一些文本2”,pin:879887,州:“我的州2”},详情:{章节:“B”,卷号:13,分支机构:“IT”}
]
让res=arr.map(行=>{
设newRow={};
for(让键输入行){
if(行hasOwnProperty(键)){
if(行的类型[键]!=='object'){
newRow[key]=行[key];
}否则{
纽罗={
…纽罗,
…行[键]
}
}
}
}
返回新行;
});

控制台信息(res)使用
映射
,扩展运算符将简化

或者,您也可以不使用硬编码键来执行通用方法

var-arr=[
{
id:1,
名称:“abc”,
地址:{street:“some text1”,pin:879888,state:“my-state1”},
详情:{A节,第12卷,分会:“CSE”}
},
{
id:2,
名称:“xyz”,
地址:{street:“some text2”,pin:879887,state:“my-state2”},
详情:{第“B”节,第13卷,分支:“IT”}
}
];
const updated=arr.map(项=>({
id:item.id,
名称:item.name,
…项目地址,
…项目.详细信息
}));
const updategeneric=arr.map(项=>{
设res={};
Object.entries(item).forEach(([key,value])=>Object.assign(res,typeof value===“Object”?value:{[key]:value}));
返回res;
});
控制台日志(更新);

console.log(updategeneric)我认为您的目标是展平阵列中的对象。因此,为了实现这一点,您可以迭代对象,提取对象的值,然后将它们传播到对象中。它可能是这样的:

var arr = [
    { id: 1, name: "abc", address: { street: "some text1", pin: 879888, state: "my-state1" }, details: { section: "A", roll: 12, branch: "CSE" } },
    { id: 2, name: "xyz", address: { street: "some text2", pin: 879887, state: "my-state2" }, details: { section: "B", roll: 13, branch: "IT" } }
]

const newArray = arr.map(obj => {
    const newObject = obj
    for(let key in newObject) {
        if(typeof newObject[key] === "object") {
            newObject = {
                ...newObject,
                ...newObject[key]
            }
            delete newObject[key]
        }
    }
    return newObject
})


您可以使用、分解
地址
详细信息
遍历数组,并使用将其余属性合并到新对象中

然后使用以下命令将每个对象合并为单个对象

const result=arr.map({address,details,…rest})=>
分配(剩余、地址、详细信息);

您应该解释您的答案,而不仅仅是发布解决方案^^。这不是它的工作原理是的,补充了一个小说明:)我认为这是最好的解决方案谢谢你@siva。感谢您的快速回复
var arr = [
    {id: 1, name: "abc", street: "some text1", pin: 879888, state: "my-state1", section: "A", roll: 12, branch: "CSE"},
    {id: 2, name: "xyz", street: "some text2", pin: 879887, state: "my-state2", section: "B", roll: 13, branch: "IT"}
]
var arr = [
    { id: 1, name: "abc", address: { street: "some text1", pin: 879888, state: "my-state1" }, details: { section: "A", roll: 12, branch: "CSE" } },
    { id: 2, name: "xyz", address: { street: "some text2", pin: 879887, state: "my-state2" }, details: { section: "B", roll: 13, branch: "IT" } }
]

const newArray = arr.map(obj => {
    const newObject = obj
    for(let key in newObject) {
        if(typeof newObject[key] === "object") {
            newObject = {
                ...newObject,
                ...newObject[key]
            }
            delete newObject[key]
        }
    }
    return newObject
})