我遇到了一个问题来修剪一个数组的前0和后0(所有元素都是0-9),例如,
对于输入[0, 1, 0, 2, 0],输出应该是[1, 0, 2]
对于输入[1, 0, 2],输出应该是[1, 0, 2]
对于输入[0, 1, 0, 2, 0, 0],输出应该是[1, 0, 2]
基本思想是找到第一个非零数的索引和非零索引的最后一个索引,并拼接原始数组.
我的方法是将数组更改为字符串并修剪它,然后再次更改回数组.
trimArray=A=>A.join('').replace(/(^['0']*)|(['0']*$)/g, '').split('').map(a=>a-'0')
还有其他想法吗?
我们可以使用数组方法来做到这一点......
var a = [0, 1, 0, 2, 0, 0];
while(a[0] === 0) {
a.shift();
}
while(a[a.length - 1] === 0) {
a.pop();
}
console.log(a)
Run Code Online (Sandbox Code Playgroud)
如果你需要保持原始数组完整:( https://jsfiddle.net/4q0un1kp/)
function trimZeros(arr)
{
var result = [...arr];
while(result[0] === 0) {
result.shift();
}
while(result[result.length - 1] === 0) {
result.pop();
}
return result;
}
var a = [0, 1, 0, 2, 0, 0];
var b = trimZeros(a);
alert(a);
alert(b);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
351 次 |
| 最近记录: |