javascript - 从数组中删除元素,直到只有 10 个元素

标签 javascript arrays

我在 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/

相关文章:

javascript - 如何将 json 对象转换为日期?

java - Jackson ObjectMapper 数组中的 JSON 空指针异常

ios - iPad 2 与 iPad Air 2 的数组排序字典。为什么相反?

c++ - 使用列表进行动态结构分配

javascript - CRUD 更新无法正常运行

javascript - 在 Chrome 中打印弹出窗口

javascript - Discord bot 客户端在尝试运行 bot 时丢失意图错误

javascript - 如何在 Sequelize 中生成 12 位唯一 ID?

javascript - 根据单独数组中的值设置数组的值 [Angular, forEach]

javascript - jQuery 字符串分割问题