【问题标题】:how to remove Duplicate from list array [duplicate]如何从列表数组中删除重复项[重复]
【发布时间】:2015-09-22 01:38:59
【问题描述】:
var cars = [
    { year: 2007, model: "Ford F-150" },
    { year: 2011, model: "Toyota Camry" },
    { year: 2007, model: "Ford F-150" },
    { year: 2007, model: "Ford F-150" },
    { year: 2005, model: "Dodge RAM" }
    { year: 2005, model: "Dodge RAM" };
];

如何从这个数组列表中删除重复项

【问题讨论】:

  • 缺少逗号和多余的分号。
  • 闻起来像家庭作业。
  • @Jeff 这不是重复的,OP 有对象数组,所以这些解决方案在他的情况下不起作用。

标签: javascript jquery


【解决方案1】:

根据indexOf 条件过滤重复项很容易,这适用于简单项目。在您的情况下,您不能使用它,因为数组中的两个相似对象不相同,所以 indexOf 将无济于事。

这种情况使用Array.prototype.reduce比较方便:

var cars = [
    { year: 2007, model: "Ford F-150" },
    { year: 2011, model: "Toyota Camry" },
    { year: 2007, model: "Ford F-150" },
    { year: 2007, model: "Ford F-150" },
    { year: 2005, model: "Dodge RAM" },
    { year: 2005, model: "Dodge RAM" }
]; 

cars = cars.reduce(function(prev, curr) {
    var inArray = prev.some(function(car) {
        return car.model === curr.model && car.year === curr.year;
    });
    if (!inArray) {
        prev.push(curr);
    }
    return prev;
}, []);

alert(JSON.stringify( cars, null, 4) )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 2017-06-21
    • 2018-05-15
    • 2019-12-07
    • 2014-09-30
    • 2015-03-01
    • 2012-10-04
    相关资源
    最近更新 更多