我正在做一個 freeCodeCamp 挑戰,任務是檢查第二個引數在第一個引數的所有元素上是否為真。這是我的代碼,它僅在函式應回傳 false 時有效,而在應回傳 true 時無效。
function truthCheck(collection, pre) {
for (let i=0; i<collection.length; i ) {
if (collection[i] === pre) {
return true;
}
}
return false;
}
truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");
uj5u.com熱心網友回復:
您應該執行以下操作:
function truthCheck(collection, pre) {
return collection.every(item => item[pre] !== undefined)
}
uj5u.com熱心網友回復:
更新
理解 OP 希望將所有物件匹配為true. 添加了第二個函式:checkAll()它將匹配給定的鍵。這是由 完成的,.every()并且密鑰由 公開Object.keys()。
- 語法錯誤
truthCheck。 - 第二個引數
pre不清楚。
輸入陣列data已更正。第二個引數現在是 2 個字串:key(ex. 'sex') 和val(ex. 'female')
.filter()將回傳為真的物件。
const log = data => console.log(JSON.stringify(data));
const data = [{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}];
const check = (array, key, val) =>
array.filter(obj => obj[key] === val);
log(check(data, 'sex', 'female'));
const checkAll = (array, key) => array.every(obj =>
Object.keys(obj).includes(key));
log(checkAll(data, 'sex'));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/381105.html
標籤:javascript
上一篇:使用“陣列路徑”從物件中獲取值
下一篇:標簽欄圖示不符合影像插入
