2017-02-11 9 views
0

iは、JavaScriptのツリーオブジェクトを持っていると私は、アレイjavascriptツリーオブジェクトからリスト配列を作成しますか?

マイツリー一覧表示するには、それを変換したい:「HREF」の値を取得し、配列リストにそれをプッシュする方法

[https://jsfiddle.net/wahmal/f2pcmptt/][1] 

を?

var res=['hrefValue','hrefValue','hrefValue','hrefValue','hrefValue','hrefValue']; 
+0

は、あなたは私たちがあなたの質問についての詳細を知らせることができ、Array.prototype.map()を使用できますか? – WitVault

+0

JavaScriptに配列リストはありませんが、同様の機能を持つ配列はあります。 –

+0

また、これを単一の配列項目にラップしてから、 ''[{...}]''で文字列に変換しようとしていますか?引用符 '' [....] 'を削除すると、 '' '引用符は複数行の文字列をサポートしていないので、それを行う理由はありません。大きな文字列であることはサポートされておらず、そうであれば機能しません。 –

答えて

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を使用して関数に渡す前に、それを解析する必要があり、配列でない文字列でなければなりません。

  • Javascriptには配列リストがありません。配列のみを持ちます。

  • ここにはArray.prototype.reduceのドキュメントへのリンクがあります。

  • ここには、作業fiddleがあります。

+0

whoaaa thnks @ibrahim、あなたは私の日を救う! – wahmal

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.] 
+0

あなたの質問についてのいくつかの説明を提供してください、コードだけの回答はそれほど有用ではありません。 – Arman

1

あなたはスプレッド要素

let res = []; 
tree.map(({href, nodes}) => res = [...res, href, ...nodes.map(({href:h}) => h)]); 
// do stuff with `res` 

jsfiddle https://jsfiddle.net/4ajr1spr/

関連する問題