[英]Function array items are not updating the global array items
我循环遍历数组中的项目,并为每个项目(字符串)添加“ juice!”来更新字符串。 这不应该通过添加新字符串来更改每个字符串吗?
var fruits = ['Orange', 'Apple', 'Tomato', 'Strawberry']
fruits.forEach(function(item, index) {
item += ' juice!';
console.log(item);
})
console.log(fruits);
输出:
Orange juice!
Apple juice!
Tomato juice!
Strawberry juice!
[ 'Orange', 'Apple', 'Tomato', 'Strawberry' ]
预期产量:
Orange juice!
Apple juice!
Tomato juice!
Strawberry juice!
[ 'Orange juice!', 'Apple juice!', 'Tomato juice!', 'Strawberry juice!' ]
字符串是不可变的。 +=
指向引用字符串的变量名将创建一个全新的字符串 ,并将新字符串分配给该变量名和仅该变量名。
如果另一个变量持有对原始字符串的引用,则不会更改它。 在这里,一个item
正在重新分配,但是fruits
数组保持不变,因为您从未分配过fruits[0]
或fruits[1]
等。
要创建一个新的数组,请在结尾处像fruits[index] = item
那样重新分配,或使用.map
:
var fruits = ['Orange', 'Apple', 'Tomato', 'Strawberry'] const newFruits = fruits.map(function(item, index) { item += ' juice!'; console.log(item); return item; }) console.log(newFruits);
尝试使用const
和.map()
const fruits = ['Orange', 'Apple', 'Tomato', 'Strawberry'] const fruitJuice = fruits.map(fruit => (fruit.concat(' juice!'))) console.log(fruitJuice)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.