我在 Javascript 中有一个对象数组,如下所示:
[{width:100,height:50,name:"John"},{width:27,height:12,name:"John"},..]
如果数组大小大于 10,我想删除那些面积(宽度*高度)较小的对象。因此,如果有 20 个对象,则删除其余对象中面积较小的 10 个。
我该怎么做?
现在我所做的是设置一个阈值来过滤对象。所以我这样做:
var i = elements.length;
var threshold = 100;
while (i--) {
if (elements[i].width * elements[i].height < threshold) {
elements.splice(i,1);
}
}
但这不是我想要的。我不想要静态阈值,我只想删除那些面积小于其余前 10 名的那些。
最佳答案
您可以先按面积对数组进行排序,然后使用 slice
只留下大 10 个。像这样:
var arr = arr.sort(function(a, b) {
var as = a.width * a.height,
bs = b.width * b.height;
if (as > bs) return -1;
if (as < bs) return 1;
return 0;
})
.slice(0, 10);
演示:http://jsfiddle.net/y765Z/
关于javascript - 从数组中删除元素,直到只有 10 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21266782/