gpt4 book ai didi

javascript - 为什么只有一些数组方法创建新实例?

转载 作者:行者123 更新时间:2023-12-02 21:10:10 25 4
gpt4 key购买 nike

我是 JavaScript 新手。来自更面向对象的背景,我注意到的一个怪癖是某些方法覆盖数组,而另一些方法则创建新实例。例如:

// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];

// append new value to the original array
arr.push("Hola");

console.log(arr);

concat

var arr = [
"apple",
"banana",
"cherry"
];

arr = arr.concat([ // original array needs to be overridden
"dragonfruit",
"elderberry",
"fig"
]);

console.log(arr);

为什么两种方法之间的行为不一致?

示例取自:How to append something to an array?

最佳答案

var foo = 1, bar = 2;

假设您要将值 foo1 添加到 bar 上。这就是你要做的:

var foo = 1, bar = 2;
bar = bar + foo + 1;
console.log(bar) //4

但是你没有这样做:

var foo = 1, bar = 2;
bar + foo + 1; //ineffective
console.log(bar) //2

这是因为运算符+ 只是将值相加并返回总和。所以还是需要重新定义bar。而在:

var foo = 1, bar = 2,i;
for(i=0;i<foo;i++) bar++; //adds 1 foo times
bar++; //adds 1

您不需要重新定义。这是因为增量运算符假定您想要递增一个值,而不是求其总和。所以它就这么做了。

<小时/> array.concat( foobar) 假设您想要获取两个数组或值,将它们连接在一起形成一个新的组合数组,然后返回新数组。从某种意义上说,它就像 + 运算符。因此它只找到它们的组合,而不设置实际的数组,因此您需要重新定义。

array.push(foobar) 假设您想要添加、粘贴、粘合或推送一个值到数组的末尾,所以它会做所以。而且因为它本身已经将它们添加到数组中,所以不需要在重新定义中使用它。

它们就是在这个意义上使用的。它可能不一致,但您需要习惯它。

关于javascript - 为什么只有一些数组方法创建新实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61119913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com