我有一个关于这个问题的解决方案的问题。它有效,但我的问题是为什么我必须写

stones = stones.slice(0 ,length - 2)

代替
stones.slice(0 ,length - 2)

像 sort() 和 push 没有它的工作。
 var lastStoneWeight = function (stones) {
    stones.sort((a, b) => a - b);
    let length = stones.length
    if(length <= 1) return stones
    let replace = stones[length - 1] - stones[length - 2]
    stones = stones.slice(0 ,length - 2) // <----- HERE
    stones.push(replace)

    if (stones.length > 1) return lastStoneWeight(stones)
    return stones
};

console.log(lastStoneWeight([8,10,4])); //return [2]

最佳答案

.sort().push() 是直接改变(修改)数组的方法。

另一方面, .slice() 是一种返回 新数组 的方法,根据您的 parameters 修改,甚至不触及初始数组。

关于javascript - 为什么将 "= "用于数组方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61174234/

10-11 13:14