簡體   English   中英

每個JS數組的問題

[英]Issue forEach JS array

這是我的代碼JS:

var items = [255, 255, 255, 255];
items.forEach(function(item) {
    if (item = 255) {
        item = 0;
    };
});
console.log(items)

在console.log中我得到[255, 255, 255, 255] ,為什么它不會改為[0, 0, 0, 0] 我究竟做錯了什么?

你想使用.map

.forEach不返回任何內容,它用於為每個項目運行一個函數。 .map為其運行的每次迭代返回一個值。

var items = [255, 255, 255, 255]
items = items.map(item => item === 255 ? 0 : item)

console.log(items) // [0, 0, 0, 0]

好吧,您只是更改值類型參數,數組中的項不會發生任何事情。 您只需將其更改為使用map然后創建一個新數組

items = items.map( item => item === 255 ? 0 : item );

正如評論中所述,在原始代碼中,您還使用了賦值運算符而不是比較運算符

當你這樣做時:

if (item = 255) 

您將為255分配項目(這將是真實的,然后進入if語句,您將其分配給0

您的代碼包含兩個錯誤。

  1. =是分配,而不是比較。 你的功能相當於:

     function (item) { item = 255; item = 0; } 
  2. item是一個函數參數,即匿名函數中的局部變量。 分配給itemitems數組沒有影響:

     var x = 255; (function (y) { y = 0; })(x); console.log(x); // 255 

您可以獲取對數組的引用,以更改Array#forEach的回調內部的值。

順便說一句,在塊語句之后不需要分號

 var items = [255, 255, 255, 255]; items.forEach(function(item, index, array) { // ^^^^^ if (item = 255) { array[index] = 0; } // ^ no semicolon needed }); console.log(items); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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