[英]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
)
您的代碼包含兩個錯誤。
=
是分配,而不是比較。 你的功能相當於:
function (item) { item = 255; item = 0; }
item
是一個函數參數,即匿名函數中的局部變量。 分配給item
對items
數組沒有影響:
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.