Bru*_*oLM 4 javascript arrays tree
我有两个数组
["a", "b", "c"]
["a", "b", "d"]
Run Code Online (Sandbox Code Playgroud)
我想把它转换成
{
a :
{
b :
{
c : null,
d : null
}
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Cri*_*hez 11
var tree = {}
function addToTree(tree, array) {
for (var i = 0, length = array.length; i < length; i++) {
tree = tree[array[i]] = tree[array[i]] || {}
}
}
addToTree(tree, ["a", "b", "c"])
addToTree(tree, ["a", "b", "d"])
/*{
"a": {
"b": {
"c": {},
"d": {}
}
}
}*/
Run Code Online (Sandbox Code Playgroud)
它唯一不做的是将树的叶子设置为null - 它将它们设置为空对象.这可以吗?
如果您希望叶子为null,请使用以下代码:
function addToTree(tree, array) {
for (var i = 0, length = array.length; i < length; i++) {
tree = tree[array[i]] = ((i == length - 1) ? null : tree[array[i]] || {})
}
}
// or, without the i == length - 1 check in each iteration:
function addToTree(tree, array) {
for (var i = 0, length = array.length; i < length -1; i++) {
tree = tree[array[i]] = tree[array[i]] || {};
}
tree[array[i]] = null;
}
/*{
"a": {
"b": {
"c": null,
"d": null
}
}
}*/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4932 次 |
| 最近记录: |