簡體   English   中英

如何在 For...of 循環中替換數組中的所有 NaN 值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM