2017-07-29 31 views
0

所以,我有以下對象的數組:如何在JavaScript對象中找到一個數組的名稱和列表,使用嵌套的for循環

var data = [ 
    { 
     "title": "scooter", 
     "materials": ["wood", "metal", "glass"] 
    }, 
    { 
     "title": "baseball bat", 
     "materials": ["wood", "metal"] 
    }, 
    { 
     "title": "coffee table", 
     "materials": ["wood"] 
    } 
]; 

試圖從一個函數來獲取以下內容: 從材料列表中選擇哪些具有超過或等於2種材料以及哪些是物品。

我已經試過如下:

function testing() { 
    let container = []; 
    let items = []; 
    for (let i = 0; i < data.length; i++) { 
     container.push(data[i].materials); 
     for (let j = 0; j < container.length; j++) { 
      if (container[i][j] >= 2) { 
       items.push(data[i].title); 
      } 
     } 
    } 
    return(items); 
} 
console.log(testing()); 

我不能夠得到嵌套數組來檢查的長度並返回標題更不用說完整列表。

什麼,我想根據標準,看一個例子:

踏板車:「木」,「金屬」,「玻璃」 棒球棒:「木」,金屬」

什麼時我的代碼錯誤行爲

+0

對象的數組,可以是'踏板車:「木」,「金屬」,「玻璃」'應該是一個數組? '滑板車:[「木頭」,「金屬」,「玻璃」]' –

+0

您能否在第一次更新您的代碼段並修復語法錯誤和不平衡的括號? – Stephan

回答

0

您只需通過一個循環測試材料長度

let items = []; 
for(let i=0 ; i<data.length; i++){ 
    if(data[i].materials.length >= 2){ 
     items.push(data[i].title); 
    } 
} 
+0

釘住它。我一直在想很多。 – user8387535

0

您可以使用filter:?!

var data = [{"title": "scooter", "materials":["wood","metal","glass"]}, {"title": "baseball bat", "materials":["wood","metal"]}, {"title": "coffee table", "materials":["wood"]}]; 
 

 
console.log(
 
    data.filter(obj => obj.materials.length >= 2) 
 
)

還是要基於結果的關鍵值轉換:

var data = [{"title": "scooter", "materials":["wood","metal","glass"]}, {"title": "baseball bat", "materials":["wood","metal"]}, {"title": "coffee table", "materials":["wood"]}]; 
 

 
console.log(
 
    data.filter(obj => obj.materials.length >= 2).map(obj => ({[obj.title]: obj.materials})) 
 
)

0

您可以使用地圖功能和過濾功能來做到這一點:

let result = data.map(elem => ({count: elem.materials.length, materials: elem.materials, title: elem.title })).filter(elem => elem.count >= 2); 

這樣,你得到包含表單中{ count: 2, materials: ["wood", "metal"], title: "baseball bat" }

+0

從箭頭函數返回一個表達式,而不是對象文字 – guest271314

+0

@guest我不太確定你的意思。 –

+0

在Answer'result'處的JavaScript會是一個包含'undefined'元素的數組'let arr = [{a:1}]; let res = arr.map(o => {b:1}); console.log(res)// [undefined]','res = arr.map(o =>({b:1})); console.log(res)// [{b:1}]' – guest271314

相關問題