我坚持要解决这个问题。
转换下面的数组
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/