【发布时间】:2021-08-09 08:45:58
【问题描述】:
var sortedSquares = function(nums) {
const squaredArray = []
for(let i=0; i<nums.length; i++){
squaredArray.push(Math.pow(nums[i], 2))
}
let arrayWithoutZeros = squaredArray.filter(ele => ele!=0 && ele !=1)
let arrayWithZeros = squaredArray.filter(ele => ele === 0 )
let arrayWithOnes = squaredArray.filter(ele => ele === 1)
let finalArray = arrayWithoutZeros.sort().reverse()
finalArray.unshift(...arrayWithOnes)
finalArray.unshift(...arrayWithZeros)
return finalArray
};
const nums = [-4,1,0,3,10]
sortedSquares(nums)
输出:[ 0, 1, 9, 16, 100 ]
所以当我调用上面的函数时,我认为 0 和 1 会出现在数组的末尾,好吧我写了一个没有它的数组
但是当我写这个问题时我意识到
var sortedSquares = function(nums) {
const squaredArray = []
for(let i=0; i<nums.length; i++){
squaredArray.push(Math.pow(nums[i], 2))
}
let arrayWithoutZeros = squaredArray.filter(ele => ele!=0 && ele !=1)
let arrayWithZeros = squaredArray.filter(ele => ele === 0 )
let arrayWithOnes = squaredArray.filter(ele => ele === 1)
let finalArray = arrayWithoutZeros.sort()
finalArray.unshift(...arrayWithOnes)
finalArray.unshift(...arrayWithZeros)
return finalArray
};
const nums = [-4,1,0,3,10]
sortedSquares(nums)
输出:[ 0, 1, 100, 16, 9 ]
即使排序也不会返回所需的输出
这是什么原因,是不是因为数组是Javascript中的对象
【问题讨论】:
-
您应该更好地阅读
unshift所做的事情。它将添加到数组的开头。 -
sortedSquares()是否有任何理由执行它所做的所有步骤?为什么要提取0s和1s 在对所有元素求平方,然后对other元素排序,然后在0s和@前面加上987654331@s 又来了?只需将所有元素平方并排序 o.O -[-4,1,0,3,10].map(x => Math.pow(x, 2)).sort((a, b) => Math.sign(b - a))
标签: javascript arrays sorting