【发布时间】:2016-02-19 20:13:44
【问题描述】:
我有一个包含多个“级别”或子级的数组。我想创建一个新的对象数组,其中 archived===false 以便不列出任何已归档的对象。
所以这个...
var arr = [
{"id":1, "archived":false,"children":[
{"id":1,"archived":true, "subs":[
{"id":1,"archived":true},
{"id":2,"archived":true},
{"id":3,"archived":true}
]},
{"id":2,"archived":false, "subs":[
{"id":1,"archived":false},
{"id":2,"archived":false},
{"id":3,"archived":true}
]}
]},
{"id":2, "archived":true,"children":[
{"id":1,"archived":true, "subs":[
{"id":1,"archived":true},
{"id":2,"archived":true},
{"id":3,"archived":true}
]},
{"id":2,"archived":true, "subs":[
{"id":1,"archived":true},
{"id":2,"archived":true},
{"id":3,"archived":true}
]}
]},
{"id":3, "archived":false,"children":[
{"id":1,"archived":false, "subs":[
{"id":1,"archived":true},
{"id":2,"archived":false},
{"id":3,"archived":true}
]},
{"id":2,"archived":false, "subs":[
{"id":1,"archived":false},
{"id":2,"archived":false},
{"id":3,"archived":false}
]}
]}
];
变成……
var arr = [
{"id":1, "archived":false,"children":[
{"id":2,"archived":false, "subs":[
{"id":1,"archived":false},
{"id":2,"archived":false}
]}
]},
{"id":3, "archived":false,"children":[
{"id":1,"archived":false, "subs":[
{"id":2,"archived":false}
]},
{"id":2,"archived":false, "subs":[
{"id":1,"archived":false},
{"id":2,"archived":false},
{"id":3,"archived":false}
]}
]}
];
我已经尝试过 map、reduce、filter 和 grep 的组合...但我可能没有正确的顺序等。我知道我可以循环遍历每个级别,但我无法做到对。
将它包含在 linq.js 可枚举数组或 jQuery 中会很棒。
【问题讨论】:
-
你查看过 Array.prototype.map 吗?
-
我做到了,但我无法在整个“关卡”中找到正确的孩子
标签: javascript jquery arrays linq.js