我有一个关于这个问题的解决方案的问题。它有效,但我的问题是为什么我必须写
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/