javascript - 如何从两个字符串数组制作 JSON - 第一个数组具有值,第二个数组具有相同序列的 ID

标签 javascript arrays json

Array 1 = Accessories:Bracket,Accessories:Clamp,Actuator:Accessories,Actuator:Accessories:Bracket,Actuator:Accessories:Clamp,Actuator:Clevis

Array 2 = 24092859,24092784,24094450,24094451,24110219,24092811

所需输出 =

[
  {
    "text": "Accessories",
    "children": [
      {
        "text": "Bracket",
        "children": [],
        "mtdtId": "24092859"
      },
      {
        "text": "Clamp",
        "children": [],
        "mtdtId": "24092784"
      }
    ],
    "mtdtId": "24092859,24092784"
  },
  {
    "text": "Actuator",
    "children": [
      {
        "text": "Accessories",
        "children": [
          {
            "text": "Bracket",
            "children": [],
            "mtdtId": "24094451"
          },
          {
            "text": "Clamp",
            "children": [],
            "mtdtId": "24110219"
          }
        ],
        "mtdtId": "24110219,24094451"
      },
      {
        "text": "Clevis",
        "children": [],
        "mtdtId": ""
      }
    ],
    "mtdtId": "24110219,24094451"
  }
]

父节点应包含子节点的 ID。

最佳答案

const array1 = "Accessories:Bracket,Accessories:Clamp,Actuator:Accessories,Actuator:Accessories:Bracket,Actuator:Accessories:Clamp,Actuator:Clevis".split(
  ","
);
const array2 = "24092859,24092784,24094450,24094451,24110219,24092811".split(
  ","
);

const output = array1.reduce(
  (topLevelNodes, path, i) => {
    let nodes = topLevelNodes;
    let mtdId = array2[i];
    path.split(":").forEach(text => {
      let node = nodes.filter(child => child.text === text)[0];
      if (node) {
        node.mtdId += "," + mtdId;
      } else {
        nodes.push((node = { text, children: [], mtdId }));
      }
      nodes = node.children;
    });
    return topLevelNodes;
  },
  []
);

console.log(output);

关于javascript - 如何从两个字符串数组制作 JSON - 第一个数组具有值,第二个数组具有相同序列的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42946636/

相关文章:

C - 字符串返回 NULL

javascript - Es6 将对象键值转换为单个对象的方法

javascript - 文本区域和向上翻页

javascript - 使用javascript选择iframe中的单选按钮

python - 使用变量 NumPy 切片保留维度

javascript - 这个javascript声明是数组还是某种对象

javascript - 如何统计过滤后显示的表格行数?

javascript - 将缓存设置为 Firebase 存储中的文件

ios - TRON 网址问题 swift

javascript - 从一个 json 变量中提取数组