如何在JavaScript中创建包含子项且没有重复值的对象数组

如何在JavaScript中创建包含子项且没有重复值的对象数组,javascript,Javascript,我有这样一个数组: initialArray = ["a", "b", "c". "d.e", "d.e.f", "d.e.g", "d.h.i", "d.h.j"] 但我想要这样的数组或尽可能接近的数组: finalArray: [ { "a": [] }, { "b": [] }, { "c": [] }, { "d": [

我有这样一个数组:

initialArray = ["a", "b", "c". "d.e", "d.e.f", "d.e.g", "d.h.i", "d.h.j"]
但我想要这样的数组或尽可能接近的数组:

finalArray: [
                    { "a": [] },
                    { "b": [] },
                    { "c": [] },
                    { "d": [
                            { "e": [ "f", "g" ] },
                            { "h": [ "i", "j" ] }
                        ] },
                ]

initialArray
的值是随机分配的。逗号分隔字符串的值和长度可以更改(这些字符串中可以有更多或更少的字母),因此我需要一个总体思路来构建
finalArray
。如果有人能帮助我,我将不胜感激。非常感谢。

这看起来像是左偏二叉树或链表之类的问题。如果当前字符后有一个点,则将其用作节点
.next()
.left()
存在的指示器。您需要手动检查重复项,即检查当前字符是否存在,例如“e”:finalArray->d->e,如果存在,只需附加到其值,否则,创建一个新数组。我就是这么做的

它看起来像是一个左偏二叉树或链表之类的问题。如果当前字符后有一个点,则将其用作节点
.next()
.left()
存在的指示器。您需要手动检查重复项,即检查当前字符是否存在,例如“e”:finalArray->d->e,如果存在,只需附加到其值,否则,创建一个新数组。我就是这么做的

您可以在
forEach
循环中使用
split
为每个路径创建一个数组,然后使用
reduce
方法创建嵌套结构

const data=[“a”、“b”、“c”、“d.e”、“d.e.f”、“d.e.g”、“d.h.i”、“d.h.j”]
常量结果=[]
常量级别={result}
data.forEach(str=>{
str.split('.')。reduce((r,e)=>{
if(!r[e]){
r[e]={result:[]}
r、 result.push({[e]:r[e].result})
}
返回r[e]
},级别)
})

console.log(result)
您可以在
forEach
循环中使用
split
为每个路径创建一个数组,然后使用
reduce
方法创建嵌套结构

const data=[“a”、“b”、“c”、“d.e”、“d.e.f”、“d.e.g”、“d.h.i”、“d.h.j”]
常量结果=[]
常量级别={result}
data.forEach(str=>{
str.split('.')。reduce((r,e)=>{
if(!r[e]){
r[e]={result:[]}
r、 result.push({[e]:r[e].result})
}
返回r[e]
},级别)
})

console.log(result)
我认为您可能需要创建一个对象。但我不知道你到底想做什么

var obj = new Object();

// add a key named myKey with value "myValue"
obj["myKey"] = "myValue";  

// add a dynamic key with a dynamic value
var key = "something", 
val = "something"; 

obj[key] = val;

// read value 
val = obj["myKey"];

我认为您可能需要创建一个对象。但我不知道你到底想做什么

var obj = new Object();

// add a key named myKey with value "myValue"
obj["myKey"] = "myValue";  

// add a dynamic key with a dynamic value
var key = "something", 
val = "something"; 

obj[key] = val;

// read value 
val = obj["myKey"];

如何从
initialArray
finalArray
?确定吗?只有一个键的对象数组没有什么意义…如何从
initialArray
finalArray
?确定吗?只有一个键的对象数组没有什么意义。。。