我有很长的数组包含数字。我需要从该数组中删除尾随零。
如果我的数组看起来像这样:
var arr = [1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
我想删除[1, 2, 0, 1, 0, 1]
以外的所有内容。
我已经创建了正在进行预期的功能,但我想知道是否有可以使用的功能构建。
var arr = [1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
for(i=arr.length-1;i>=0;i--)
{
if(arr[i]==0)
{
arr.pop();
} else {
break;
}
}
console.log(arr);
这可以更好/更快地完成吗?
答案 0 :(得分:11)
假设:
var arr = [1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
您可以使用这个更短的代码:
while(arr[arr.length-1] === 0){ // While the last element is a 0,
arr.pop(); // Remove that last element
}
结果:
arr == [1,2,0,1,0,1]
答案 1 :(得分:1)
var arr = [1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var copy = arr.slice(0);
var len = Number(copy.reverse().join('')).toString().length;
arr.length = len;
arr -> [1, 2, 0, 1, 0, 1]
如何运作
copy.reverse().join('')
变为" 00000000000000000101021"
当您将数字字符串转换为数字时,所有前面的零都将被启动
var len = Number(copy.reverse().join('')) becomes 101021
现在只计算我知道的数字,我必须删除尾随的零,删除traling元素的最快方法是重置数组的长度。
arr.length = len;