![](/img/trans.png)
[英]Pushing elements from an object to an array, but in a for...of loop
[英]How to replace all NaN values from array within For...of loop
如果我有以下數組
let initialdates = [2019-12-07,2019-12-08, NaN-NaN-NaN]
為什么以下內容對我刪除 NaN 的過程不起作用....
let initialdates = [2019 - 12 - 07, 2019 - 12 - 08, NaN - NaN - NaN] for (let [index, dateField] of initialdates.entries()) { if (isNaN(dateField)) { initialdates[dateField] = "found issue"; } } console.log('the final array is: ' + initialdates);
它仍然打印出來......
the final array is: 2019-12-07,2019-12-02,NaN-NaN-NaN
initialdates[dateField] = "found issue";
應該
initialdates[index] = "found issue";
您需要使用索引而不是值來覆蓋成員。
let initialdates = [2019 - 12 - 07, 2019 - 12 - 08, NaN - NaN - NaN] for (let [index, dateField] of initialdates.entries()) { if (isNaN(dateField)) { initialdates[index] = "found issue"; // <-- use 'index' } } console.log('the final array is: ' + initialdates);
按照您的方式,您將一個名為"NaN"
的屬性添加到數組中。
let initialdates = [2019 - 12 - 07, 2019 - 12 - 08, NaN - NaN - NaN] initialdates = initialdates.filter(i=>i); console.log('the final array is: ' + initialdates);
如果有減號,是的,一個簡單的過濾器將刪除NaN
。 但是如果它們是分隔日期部分的破折號,則需要將它們設為字符串。
回答你的問題。 您在代碼中犯了一個錯誤。 不是修改索引中的值,而是給出值本身。
initialdates[index] = "found issue";
並用 ES6 替換該功能,您可以在其上使用過濾器。
const initialdates = [2019 - 12 - 07,2019-12-8, NaN-NaN-NaN];
const result = initialdates.filter(value => !isNaN(value));
console.log('the final array is: ' + result);
其中不包含 NaN。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.