2017-09-15 17 views
-4

我想從classes數組中檢索所有對象,其中coachId === 2使用filter或任何ES6函數。使用Javascript Array過濾器獲取數組中所有匹配的類

示例輸入:

let arr = 
[ 
{ 
    name: "boo", 
    schedule: { 
    classes: [ {coachId: 1}, {coachId: 2}, {coachId: 3}] 
    } 
}, 
{ 
    name: "foo", 
    schedule: { 
    classes : [ {coachId: 1}, {coachId: 2}, {coachId: 4}] 
    } 
} 
] 

預期輸出:

[ 
    [ {coachId: 2}], 
    [ {coachId: 2}] 
] 
+0

好吧,我們現在有一些代碼。但預期的產出是多少? 「我想要所有課程」是什麼意思?你想要一個類的數組嗎?所有類連接? –

+0

我想要一些班級@Jeremy Thille – srinivas

+0

所以你想要'[[{coachId:1},{coachId:2},{coachId:3}],[{coachId:1},{coachId:2},{coachId :3}]]?一組數組?這是所需的輸出? '我想要一些類'仍然不清楚。 _Explicitely_寫出所需的輸出結構。 –

回答

0

var arr = 
 
[ 
 
{ 
 
    name: "boo", 
 
    schedule: { 
 
\t classes: [ {coachId: 1}, {coachId: 2}, {coachId: 3}] 
 
    } 
 
}, 
 
{ 
 
    name: "foo", 
 
    schedule: { 
 
\t classes : [ {coachId: 1}, {coachId: 2}, {coachId: 4}] 
 
    } 
 
} 
 
]; 
 

 
var employeeId = 2; 
 
var finalArr = arr.map(item => { 
 
\t item.schedule.classes = item.schedule.classes.map(cls => { 
 
     cls.coachId = employeeId; 
 
     return cls; 
 
    }); 
 
    return item; 
 
}); 
 
console.log(finalArr);

編輯:

var employeeId = 2; 
var finalArr = []; 
arr.forEach(item => { 
    var classes = item.schedule.classes.map(cls => { 
     cls.coachId = employeeId; 
     return cls; 
    }); 
    finalArr = finalArr.concat(classes); 
}); 
console.log(finalArr); 
+0

''未捕獲的SyntaxError:意外的令牌=>「' –

+0

我已更新答案 – Faly

+0

它的工作原理,但我們仍然不知道OP需要什麼。我們所知道的是他們想要'數組類'。 –

2

這是你在找什麼?

const arr = 
 
[ 
 
{ 
 
    name: "boo", 
 
    schedule: { 
 
    classes: [ {coachId: 1}, {coachId: 2}, {coachId: 3}] 
 
    } 
 
}, 
 
{ 
 
    name: "bar", 
 
    schedule: { 
 
    classes : [ {coachId: 1}, {coachId: 4}] 
 
    } 
 
}, 
 
{ 
 
    name: "foo", 
 
    schedule: { 
 
    classes : [ {coachId: 1}, {coachId: 2}, {coachId: 4}] 
 
    } 
 
} 
 
] 
 

 
console.log(arr.reduce((result, item) => { 
 
    result = [...result, ...item.schedule.classes.filter(classItem => classItem.coachId === 2)]; 
 
    return result; 
 
}, []));

+0

我只想要匹配的對象具有coachId是2從類數組中。你的代碼是錯誤的。 – srinivas

+1

他的代碼是錯誤的,因爲沒有辦法告訴使用_exactly_所需的輸出結構。我們所有的是'我想要一些類'。 –

+0

現在看到OP的上面的評論:我想輸出像'[[{coachId:2}],[{coachId:2}]]' –

相關問題