javascript - 如何从数组中取出项目并以正确的顺序嵌套它们?

标签 javascript arrays node.js json object

所以我无法解决这个问题。我有以下数组:

var array1 = [
USA,
Georgia,
Atlanta
]

var array2 = [
USA,
New York
]

这就是我想要的:

{
    "counties": [
        {
            "name": "USA",
            "id": "1",
            "children": [
                {
                    "name": "Georgia",
                    "id": "1.1",
                    "parentId": "1",
                    "children": [
                        {
                            "name": "Atlanta",
                            "id": "1.1.1",
                            "parentId": "1.1"
                        }
                    ]
                },
                {
                    "name": "New York",
                    "id": "1.2",
                    "parentId": "1"
                }
            ]
        }
    ]
}

诀窍是不要有任何重复,如果同一级别上有任何重复,则应将它们合并为一个并将两个子级都放在下面。就像例子中的美国一样。

最佳答案

我有这个transform方法。在参数中传递任意数量的数组:

演示:

const array1 = [
    'USA',
    'Georgia',
    'Atlanta'
]

const array2 = [
    'USA',
    'New York'
]



const transform = (...arrays) => {
    const result = [];

    arrays.forEach(array => {
        let node = result;
        let parentID = ''

        array.forEach(item => {

            const current = node.find(c => c.name === item);

            if(current){
                node = current.children
            }else{
                const newNode = {
                    name: item,
                    children: [],
                    id: parentID === '' ? (node.length+1) + '' : parentID + '.'  + (node.length+1),
                    parentID
                };

                parentID = newNode.id;
                node.push(newNode);
                node = newNode.children
            }

        })
    })

    return {counties: result}
}

const result = transform(array1, array2);

console.log(result);

// {
//     "counties": [
//         {
//             "name": "USA",
//             "id": "1",
//             "parentID": "",
//             "children": [
//                 {
//                     "name": "Georgia",
//                     "id": "1.1",
//                     "parentID": "1",
//                     "children": [
//                         {
//                             "name": "Atlanta",
//                             "id": "1.1.1",
//                             "parentID": "1.1",
//                             "children": []
//                         }
//                     ]

//                 },
//                 {
//                     "name": "New York",
//                     "children": [],
//                     "id": "2",
//                     "parentID": ""
//                 }
//             ]

//         }
//     ]
// }

关于javascript - 如何从数组中取出项目并以正确的顺序嵌套它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60506819/

相关文章:

javascript - MongoDb批量插入限制问题

javascript - 找不到 javascript 函数调用的源

javascript - 查询字符串被 window.open() chop 了吗?

javascript - 无法读取未定义的属性 'props' - React Router

JavaScript 多维数组 - 对象链接

java - 如何修复我的子类循环,使其在主类中调用时仅循环一次?

php - 使用简单的 html dom 获取 url-data 属性

java - 从客户端(NodeJS)向服务器(Spring Boot)发送请求时省略字符

javascript - 一直在onclick中 react 调用函数

javascript - Chrome 扩展程序如何收到后台脚本要关闭的通知?