Angular2避免向数组添加重复的JSON对象

时间:2017-06-06 18:23:28

标签: arrays json angular

我试图避免将重复的对象添加到Angular2数组中。例如,让我们说我们有一个阵列" Cars"我们在该数组中放入一个JSON对象,可能类似于:

{
 "brand": "Acura"
 "engine": "2.4L"
 + others details
}

我们可以继续添加汽车到阵列。我现在的问题是如何避免再次将同一辆车添加到阵列中。如果我要添加如上所述的相同JSON,则不应添加它。我是否必须遍历数组中的所有现有对象并比较JSON的每个字段?这对我来说听起来像是一项昂贵的操作,还是有更优雅/更快的方法?

谢谢!

2 个答案:

答案 0 :(得分:4)

如果每辆车都有独特的东西(比如ID),你可以使用一个对象而不是一个数组:

var map = { };

function add(car) {
    if (map[car.id]) {
        return;
    }

    map[car.id] = car;
}

您的ID可能是其他独特的东西,例如品牌和年份或类似的组合。

map[car.brand + car.year] = car

答案 1 :(得分:0)

您需要在列表中的项目上查找或创建唯一属性,然后您可以使用类似lodash的内容通过属性查询数组,以便在添加之前查看该项目是否已存在于列表中。

来自Lodash网站

的示例
a {
  height:400px;
  width:200px;
  display:block;
  text-decoration:none;
  color:black;
  overflow:hidden;
}

img {
  transform: scale(1.1);
}

a:hover .text {
  color:white;
  background-color:black;
}

.text {
  text-align:center;
  height:200px;
  margin-top:-4px;
  background-color:white;
  transition:all 1s ease;
}