如何解决根据它们的 id 调用对象并将结果附加到一个大的最终对象
myArr=[ {
"id": "25a91eccf70ae3eb","name": "ParentID",},{
"id": "25a91eccf70ae3eb","name": "Child1",{
"key": "25a91eccf70ae3eb","name": "Child2",}]
并希望每个对象都以自己的 id 命名并将它们附加到以下格式的大对象中
myBigObject={
ParentID:{
id: "ParentID",name: "Parent",child1_ID:{
id: "child1_ID",name: "Child1",child2_ID:{
id: "child2_ID",name: "Child2",}
我怎样才能做到这一点? 谢谢
解决方法
这是一个简单易读的解决方案:
var myArr = [{
"key": "25a91eccf71ae3eb","name": "ParentID",},{
"key": "25a91eccf72ae3eb","name": "Child1",{
"key": "25a91eccf73ae3eb","name": "Child2",}
]
let finalObj = {}
const first_node = myArr[0];
for (let item of myArr) {
finalObj[item.key] = { 'id': item.key,"name": item.name };
if (item.key == first_node.key) {
finalObj[item.key].ChildrenID = [];
continue;
}
finalObj[first_node.key].ChildrenID.push(item.key);
}
console.log(finalObj);
您可以使用 Object.assign()
和 map()
来完成此操作。
const myArr = [
{
"id": "25a91eccf70ae3eb",{
"id": "25a91eccf70ae3eb",}
];
const arrMap = myArr.map(({ id,name },i) => {
return i === 0 ? // if loop is at first element
{ parent_ID: { id,name } } : // return parent
{ [`child${i}_ID`]: { id,name } }; // otherwise corresponding child
});
const result = Object.assign({},...arrMap); // assign to object
console.log(result);
在您的问题中,示例对象的每个“键”属性的值都相同。我已经改变了假设所有键都不同的假设。请检查下面的解决方案 -
const myArr=[
{
"key": "123",{
"key": "456",{
"key": "789",}];
function modifyArray(arr) {
return arr.reduce((resultObj,currObj,index) => {
resultObj = {
...resultObj,[currObj.key]: {
id: currObj.key,name: currObj.name
}
}
return resultObj;
},{});
}
const arr1 = modifyArray(myArr);
console.log(arr1);
似乎您所追求的大部分内容都可以使用 the .forEach() method 对数组的每个元素运行特定函数(这将是您更改内容的地方)然后将结果对象添加到您的大输出对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。