Javascript 数据格式问题:数组到对象。有简单的方法吗?
我试图将数组格式化为对象。它工作正常,但我需要知道,这是正确的还是错误的?还有其他标准的方法吗 我用下划线来表示这个 //我从API得到了什么 “A/A/1”=A->类别,A->子类别,1->子类别的子类别Javascript 数据格式问题:数组到对象。有简单的方法吗?,javascript,arrays,object,formatting,Javascript,Arrays,Object,Formatting,我试图将数组格式化为对象。它工作正常,但我需要知道,这是正确的还是错误的?还有其他标准的方法吗 我用下划线来表示这个 //我从API得到了什么 “A/A/1”=A->类别,A->子类别,1->子类别的子类别 ["A", "A/a", "A/b", "A/a/1", "A/a/2", "B", "B/a"]; //我需要哪种格式 [ { "name":"A", "parent":"", "children":[ {
["A", "A/a", "A/b", "A/a/1", "A/a/2", "B", "B/a"];
//我需要哪种格式
[
{
"name":"A",
"parent":"",
"children":[
{
"name":"a",
"parent":"A",
"children":[
{
"name":"1",
"parent":"a",
"children":[
]
},
{
"name":"2",
"parent":"a",
"children":[
]
}
]
},
{
"name":"b",
"parent":"A",
"children":[
]
}
]
},
{
"name":"B",
"parent":"",
"children":[
{
"name":"a",
"parent":"B",
"children":[
]
}
]
}
]
我的代码:
var dataObj = function(){
this.name = "";
this.parent = "";
this.administrator = "";
this.children = [];
};
var d_ = [];
_.each(data, function(item, index){
var row = new dataObj();
var item_array = item.split("/"),
item_array_length = item_array.length;
if(item_array.length == 1){
row.name = item_array[0];
d_.push(row);
} else {
row.name = item_array[1];
row.parent = item_array[0];
var newC = d_[_.findIndex(d_, {name:item_array[0]})];
if(item_array.length == 2) {
newC.children.push(row);
} else if(item_array.length == 3) {
newC.children[_.findIndex(newC.children, {name: item_array[1]})]
.children.push({name : item_array[2], parent : item_array[1]});
}
}
});
更新
子类别的级别不受限制。“A/A/1/i/n/x/y…”我觉得您的实现可以改进。以下是几种可能性:
[“A/b”、“A/A/1”、“A/A/2”、“b/A”]
的形式,而不是[“A”、“A/A”、“A/b”、“A/A/1”、“A/A/2”、“b”、“b/A”]
\uu
库似乎帮不了什么忙,代码可以用普通javaScript实现sampleArray
sampleArray
的每个元素,我们有currentSplittedElementArray=sampleArray[i].split('/')代码>
finalOutput
finalOutput
并测试元素是否已经存在finalOutput[i]。name==currentSplittedElementArray[0]
currentSplittedElementArray
循环,并使用currentSplittedElementArray
的元素更新finalOutput
的相同元素。(如果元素尚未出现在finalOutput
上,那么让我们首先在finalOutput
上创建元素,并用currentSplittedElementArray
的元素填充它)我对我的方法中的任何改进/优化领域都持开放态度。对不起,这背后的逻辑是什么?有什么我们可以申请的吗?它似乎没有一个非常具体的逻辑。@briosheje“a/a/1”=a->Category,a->Subcategory,1->Subcategory的子类。所有级别用“/”分隔。我需要将格式更改为object(我在上面添加了所需的格式)。我可以看到您正在查找的最终输出中的某些节点中缺少“administrator”属性。请澄清这是否是有意的,如果是,那么背后的逻辑应该是什么?并希望了解其他约束和条件,如if 1。API 2的响应中可能存在重复元素。如果嵌套级别最多为三个。这将使我们清楚地知道,解决方案是否应该足够通用,以处理所有这些问题cases@DopedDude不要想管理员。。子类别的级别不受限制。“A/A/1/i/n/x/y…”。不能限制任何级别(但目前我限制了3个级别)。逻辑是我们需要创建一个字符串形式的对象来生成产品的级别。