2 回答

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
正如Maheer Ali所說(shuō)的,您可以使用Array#findIndex,但是它將返回一個(gè)值-滿足條件的第一個(gè)值。在您的示例中,如果您有許多correct鍵等于的對(duì)象true,您仍將獲得其中之一。
因此,如果您希望所有對(duì)象都滿足要求,則有許多解決方案。
Array#reduce
正如Maheer Ali在評(píng)論中建議的那樣,您可以嘗試使用Array#reduce。
更短,并且在數(shù)組上具有唯一的循環(huán):
const arr = [
{correct: false},
{correct: true},
{correct: false},
{correct: true},
],
filtered = arr.reduce((acc, item, index) => ((item.correct) ? [...acc, index] : acc), []);
console.log(`the correct answers are ${filtered.join(', ')}`);
Array#map 和 Array#filter
嘗試Array#map(Array#filter用于刪除false值):
const arr = [
{correct: false},
{correct: true},
{correct: false},
{correct: true},
],
filtered = arr.map((item, index) => ((item.correct) ? index : false)).filter((item) => (item));
console.log(`the correct answers are ${filtered.join(', ')}`);
但是,該數(shù)組將循環(huán)兩次(一次是Array#map,另一次是Array#filter。)。
for...in 陳述
最終,您可以通過(guò)循環(huán)遍歷原始索引,將索引推入一個(gè)空數(shù)組中,以實(shí)現(xiàn)此目的for...in:
const arr = [
{correct: false},
{correct: true},
{correct: false},
{correct: true},
],
filtered = [];
for (let index in arr) {
if (arr[index].correct) {
filtered.push(index);
}
}
console.log(`the correct answers are ${filtered.join(', ')}`);

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用findIndex()which返回匹配條件的數(shù)組第一個(gè)元素的索引。
const arr = [
{correct: false},
{correct: true},
{correct: false},
{correct: false},
]
console.log(`the correct answer is` + arr.findIndex(x => x.correct))
添加回答
舉報(bào)