javascript - 通过javascript将数组转换为json对象

标签 javascript arrays json algorithm data-structures

我坚持要解决这个问题。
转换下面的数组

var input = [
    'animal/mammal/dog',
    'animal/mammal/cat/tiger',
    'animal/mammal/cat/lion',
    'animal/mammal/elephant',
    'animal/reptile',
    'plant/sunflower'
]

到 json 对象
var expectedResult = {
 "animal": {
  "mammal": {
   "dog": true,
   "cat": {
    "tiger": true,
    "lion": true
   },
   "elephant": true
  },
  "reptile": true
 },
 "plant": {
  "sunflower": true
 }
}

我可以申请哪种数据结构和算法?
谢谢

最佳答案

你需要先split要转换为数组的每个元素

使用 reverse reduce方法,您可以将它们转换为对象。

最后一步是合并这些对象。
Lodash.js合并方法是合并它们的一种方法。

var input = ['animal/mammal/dog','animal/mammal/cat/tiger','animal/mammal/cat/lion', 'animal/mammal/elephant','animal/reptile', 'plant/sunflower']
var finalbyLodash={}
input.forEach(x=>{
  const keys = x.split("/");
  const result = keys.reverse().reduce((res, key) => ({[key]: res}), true);
  finalbyLodash = _.merge({}, finalbyLodash, result);
});
console.log(finalbyLodash);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>

关于javascript - 通过javascript将数组转换为json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61987723/

相关文章:

javascript - Contenteditable div 输入问题(keyCode 13)

javascript - 如何读取 Cypress 的数据值?

javascript - 未捕获的语法错误 : Unexpected token

arrays - SWIFT:努力在数组中添加随机名称

c - 尝试在十六进制输入中使用小端和大端

c# - 如何使用 local.settings.json 文件的内容设置我的 Azure Function?

html - 在脚本标签中嵌入 JSON 对象

javascript - 如何在 React 中过滤或搜索对象数组?

C# 递增用作整数计数器的字节数组的最快方法?

java - 如何将已解析的 JSON 的 Java 列表解析为 Big JSON?