我有這個物件:
obj = {23-10-2022: 3, 24-10-2022: 1, 28-10-2022: 4, 29-10-2022: 1, 30-10-2022: 1}
這個日期陣列:
dates = [19-10-2022, 20-10-2022, 21-10-2022, 22-10-2022, 23-10-2022, 24-10-2022, 25-10-2022, 26-10-2022, 27-10-2022, 28-10-2022, 29-10-2022, 30-10-2022, 31-10-2022]
我想回圈遍歷 obj 和陣列并檢查:如果 obj === dates[i] 中的第一個鍵,則回傳 obj[key]=(the value) 并移動到下一個 obj 鍵,但從下一個繼續日期 [i] 而不是從開始的 elese 回傳 0。
最后我想得到回報:0,0,0,0,3,1,0,0,0,4,1,1
這是我的代碼:
for (let key in obj){
for (let i = 0; i < dates.length; i ){
if (obj.hasOwnProperty(key)) {
let value = obj[key];
let date = dates[i];
return key
if(key===date){
return value;
key ///gives NaN not correct
}
else{
return 0;
}
}
}
}
我需要改變什么?
在它回傳的那一刻: [0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4] 因為它回到首次日期值并重新檢查。
uj5u.com熱心網友回復:
你可以map()在dates陣列上。這里使用nullish 合并運算子 (??)來分配0如果檢索屬性回傳undefined.
const obj = { '23-10-2022': 3, '24-10-2022': 1, '28-10-2022': 4, '29-10-2022': 1, '30-10-2022': 1 }
const dates = ['19-10-2022', '20-10-2022', '21-10-2022', '22-10-2022', '23-10-2022', '24-10-2022', '25-10-2022', '26-10-2022', '27-10-2022', '28-10-2022', '29-10-2022', '30-10-2022', '31-10-2022']
const result = dates.map(date => obj[date] ?? 0);
console.log(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/525179.html
上一篇:如何在結束檔案上停止宏?
下一篇:生成隨機字符
