2017-02-23 7 views
2

のマルチレベルアレイからデータを抽出します。NodeJS - 私は、次のJSON配列持つオブジェクト

{ 
"list": [{ 
    "name": "Assignment", 
    "id": 67, 
    "template": 0, 
    "children": [{ 
     "assignmentnumber": 1000, 
     "fromCountry": "Sweden", 
     "toCountry": "Spain", 
     "fromCity": "Stockholm", 
     "toCity": "Madrid" 
    }, { 
     "assignmentnumber": 15678, 
     "fromCountry": "Sweden", 
     "toCountry": "Germany", 
     "fromCity": "Stockholm", 
     "toCity": "Berlin" 
    }, { 
     "assignmentnumber": 10001, 
     "fromCountry": "Sweden", 
     "toCountry": "United Kingdom", 
     "fromCity": "Stockholm", 
     "toCity": "London" 
    }] 
}, { 
    "name": "Valuation form", 
    "id": 36, 
    "template": 0, 
    "children": [15678] 
}, { 
    "name": "Claim", 
    "id": 12, 
    "template": 0, 
    "children": [1000, 10001] 
}] 
} 

を私だけの「name」要素を含む配列から新しい配列を抽出する必要があります。私はロダッシュを試しましたが、正しく使用する方法を理解することはできません。

私に手掛かりを与えることができる人は誰ですか?

+0

@JPlexor、それはあなたのために働いていますか? –

+0

それは魅力のように動作します;-)すべてありがとう! –

答えて

4

mapメソッドを使用する必要があります。このメソッドは、パラメータとしてcallbackの機能を受け入れます。

map()メソッドは、この配列のすべての要素に関数 を呼び出した結果で新しい配列を作成します。

var array=obj.list.map(callback); 
function callback(item){ 
    return item.name; 
} 

それとも単に:

var array=obj.list.map(el=>el.name); 

var obj={ 
 
"list": [{ 
 
    "name": "Assignment", 
 
    "id": 67, 
 
    "template": 0, 
 
    "children": [{ 
 
     "assignmentnumber": 1000, 
 
     "fromCountry": "Sweden", 
 
     "toCountry": "Spain", 
 
     "fromCity": "Stockholm", 
 
     "toCity": "Madrid" 
 
    }, { 
 
     "assignmentnumber": 15678, 
 
     "fromCountry": "Sweden", 
 
     "toCountry": "Germany", 
 
     "fromCity": "Stockholm", 
 
     "toCity": "Berlin" 
 
    }, { 
 
     "assignmentnumber": 10001, 
 
     "fromCountry": "Sweden", 
 
     "toCountry": "United Kingdom", 
 
     "fromCity": "Stockholm", 
 
     "toCity": "London" 
 
    }] 
 
}, { 
 
    "name": "Valuation form", 
 
    "id": 36, 
 
    "template": 0, 
 
    "children": [15678] 
 
}, { 
 
    "name": "Claim", 
 
    "id": 12, 
 
    "template": 0, 
 
    "children": [1000, 10001] 
 
}] 
 
}; 
 
console.log(obj.list.map(function(item){ 
 
    return item.name; 
 
}));

0

あなたは、ネイティブ配列のAPIを使用して、lodashせずにこれを行うことができます。

const obj = { /* The JSON in your question */ }; 
const names = obj.list.map(item => item.name); 
Array.map()

機能を取得し、各項目の結果を含む新しい配列を返し、アレイの各項目にその関数を呼び出します。

0

地図は誰もが述べたように行く最善の方法です。もう一つの方法はforEachループを使用することです。

var children = obj.children; 
var array_of_names; 

children.forEach(function (item)){ 
    array_of_names.push(item.name); 
    //... Do more operations for each item 
} 
関連する問題