我有javascript树对象,我想将其转换为列表数组
我的树:
[https://jsfiddle.net/wahmal/f2pcmptt/][1]
如何获取'href'值并将其推送到数组列表?
var res=['hrefValue','hrefValue','hrefValue','hrefValue','hrefValue','hrefValue'];
答案 0 :(得分:1)
var getHrefs = function(nodes) {
return nodes.reduce(function (arr, node) {
return arr.concat(node.href).concat(node.nodes ? getHrefs(node.nodes) : []);
}, []);
}
var hrefs = getHrefs(tree); // ["7400.34.03.00.00.00", "7400.34.03.01.00.00", ... etc.]
答案 1 :(得分:1)
function convert(tree){
return tree.reduce(function(acc, o) { // check the docs for reducs in the link bellow
if(o.href) // if this object has an href
acc.push(o.href); // add the href to the result array
if(o.nodes) // if this object has children
acc = acc.concat(convert(o.nodes)); // get their href and add (concat) them to the result
return acc;
}, []);
}
tree
应该是一个数组而不是字符串,如果你把它作为一个字符串(JSON字符串),那么你必须在使用JSON.parse
将它传递给函数之前解析它。 / p>
Javascript没有ArrayLists,只有数组。
以下是Array.prototype.reduce文档的链接。
这是一个有效的fiddle。
答案 2 :(得分:1)
您可以使用Array.prototype.map()
,展开元素
let res = [];
tree.map(({href, nodes}) => res = [...res, href, ...nodes.map(({href:h}) => h)]);
// do stuff with `res`
jsfiddle https://jsfiddle.net/4ajr1spr/