如何在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
?确定吗?只有一个键的对象数组没有什么意义。。。