从数组中删除等于零的尾随元素 - 更好的方法

时间:2014-08-18 11:03:47

标签: javascript jquery

我有很长的数组包含数字。我需要从该数组中删除尾随零。

如果我的数组看起来像这样:

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);

这可以更好/更快地完成吗?

2 个答案:

答案 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;

DEMO