【发布时间】:2018-06-05 11:42:07
【问题描述】:
我有一个按升序排序的 int 数组,我想根据特定边界从尾部删除数组项。在我的情况下,截断数组的更好方法是什么?考虑下一个代码 sn-ps:
var a = [1, 2, 3, 4];
var length = a.length;
var boundary = 2;
var count = 0;
for (var i = length - 1; i >= 0; i--) {
if (a[i] > boundary) {
a[i] = null; // or delete a[i] ???
count++;
}
}
a.length -= count;
或相同但使用拼接:
for (var i = length - 1; i >= 0; i--) {
if (a[i] > boundary) {
a.splice(i, 1);
}
}
【问题讨论】:
-
这两个sn-ps的代码做的事情非常不同,它们都没有删除只在尾部的元素。要了解我的意思,请使用
[4, 3, 2, 1]作为您的数组。 -
我的数组总是升序排列。
-
啊,我没注意到那个细节。那么你应该使用二进制搜索。
-
好点!没想到,但需要试一试!
标签: javascript arrays algorithm