Javascript 如何将所有为零的元素移动到数组的末尾?
编写一个函数,该函数接受一个值数组,并将所有为零的元素移动到数组的末尾,否则保留数组的顺序。零元素还必须保持它们发生的顺序 零元素由0或“0”定义。某些测试可能包含非数字文字的元素 不允许使用任何临时数组或对象。也不允许使用任何Array.prototype或Object.prototype方法。因此不允许使用Array.push或splice() 我试过这个:Javascript 如何将所有为零的元素移动到数组的末尾?,javascript,arrays,Javascript,Arrays,编写一个函数,该函数接受一个值数组,并将所有为零的元素移动到数组的末尾,否则保留数组的顺序。零元素还必须保持它们发生的顺序 零元素由0或“0”定义。某些测试可能包含非数字文字的元素 不允许使用任何临时数组或对象。也不允许使用任何Array.prototype或Object.prototype方法。因此不允许使用Array.push或splice() 我试过这个: function removeZeros(nums) { for(let i = nums.length - 1; i >
function removeZeros(nums) {
for(let i = nums.length - 1; i >= 0 ; i--){
if(nums[i] === 0){
nums.splice(i, 1);
nums.push(0);
}
}
return nums;
}
输入:
预期:
实际:
结果是正确的,但我需要在没有array.push()或array.splice()的情况下执行此操作
函数删除零(nums){
让originalLen=nums.length
设非零=nums.filter(布尔值)
返回[…非零,…新数组(原始非零.长度).fill(0)]
}
log(删除零([7,2,3,0,4,6,0,0,13,0,78,0,0,19,14]))
- 取原始数组的长度
- 从原始数组中筛选非零值
- 根据过滤后的数组长度与原始数组长度的差异,在末尾加零
函数删除零(nums){
让originalLen=nums.length
设非零=nums.filter(布尔值)
返回[…非零,…新数组(原始非零.长度).fill(0)]
}
log(删除零([7,2,3,0,4,6,0,0,13,0,78,0,0,19,14]))
使用for循环,遍历数组,并使用简单的条件检查零
var arr = [7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14];
var prev_zero_index = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] != 0 && arr[i - 1] == 0) {
prev_zero_index++;
arr[prev_zero_index] = arr[i];
arr[i] = 0;
}
}
var arr=[7,2,3,0,4,6,0,0,13,0,78,0,0,19,14];
var prev_zero_指数=0;
for(设i=0;i
使用for循环,遍历数组,并使用简单的条件检查零
var arr = [7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14];
var prev_zero_index = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] != 0 && arr[i - 1] == 0) {
prev_zero_index++;
arr[prev_zero_index] = arr[i];
arr[i] = 0;
}
}
var arr=[7,2,3,0,4,6,0,0,13,0,78,0,0,19,14];
var prev_zero_指数=0;
for(设i=0;i
您可以使用:
const arr=[7,2,3,0,4,6,0,0,0,13,0,78,0,0,19,14]
arr.sort((a,b)=>(a==0)-(b==0))
console.log(arr)
您可以使用:
const arr=[7,2,3,0,4,6,0,0,0,13,0,78,0,0,19,14]
arr.sort((a,b)=>(a==0)-(b==0))
console.log(arr)
功能推零(arr){
让计数=0;
for(设i=0;i
基本上,我循环遍历数组的所有元素,在循环时选取非零元素,并将其从同一数组的第0个位置存储。循环完成后,count将等于数组中非零元素的总数。然后,可以将Rest all初始化为零。函数pushZeros(arr){
让计数=0;
for(设i=0;i
基本上,我循环遍历数组的所有元素,在循环时选取非零元素,并将其从同一数组的第0个位置存储。循环完成后,count将等于数组中非零元素的总数。然后可以将Rest all初始化为零。您只需执行以下操作:
let data=[7,2,3,0,4,6,0,0,13,0,78,0,0,19,14]
让结果=数据。排序((a,b)=>!!b-!!a)
console.log(result)
您可以简单地执行以下操作:
let data=[7,2,3,0,4,6,0,0,13,0,78,0,0,19,14]
让结果=数据。排序((a,b)=>!!b-!!a)
console.log(result)
但您使用的过滤函数是Array.prototype或Object.prototype的方法之一,这在这里是不允许的。@更新代码中的code ManiacArray.push()在这里也是不允许的。@ArjunKumar有太多的限制,无论如何您都可以使用扩展语法,concat无论你喜欢哪个,但你使用的过滤函数是Array.prototype或Object.prototype的方法之一,这在这里是不允许的。@更新代码中的code ManiacArray.push()在这里也是不允许的。@ArjunKumar有太多的限制,无论如何你可以使用扩展语法,无论您选择哪个
like@ArjunKumar非零项的顺序与原始数组中的顺序相同<代码>7,2,3,4,6,13,78,19,14
@ArjunKumar非零项的顺序与原始数组中的顺序相同<代码>7,2,3,4,6,13,78,19,14for后面的语法错误右大括号不匹配。虽然代码可以回答问题,但解释要点可以提高回答的质量for
后面的语法错误右大括号不匹配。虽然代码可以回答问题,解释要点可以在不使用array.push和array.splice的情况下提高回答的质量。只有我编写了将零移动到数组末尾的算法。我没有收到您关于数组值的评论。顺序是否已更改?如果不使用array.push&array.splice,我只编写了将零移动到数组末尾的算法。我没有收到您关于数组值的评论,顺序是否已更改?
[7, 2, 3, 4, 6, 13, 78, 19, 14, 0, 0, 0, 0, 0, 0]
var arr = [7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14];
var prev_zero_index = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] != 0 && arr[i - 1] == 0) {
prev_zero_index++;
arr[prev_zero_index] = arr[i];
arr[i] = 0;
}
}
function pushZeros(arr) {
let count = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== 0) arr[count++] = arr[i];
}
while (count < arr.length) arr[count++] = 0;
return arr;
}