我试图避免将重复的对象添加到Angular2数组中。例如,让我们说我们有一个阵列" Cars"我们在该数组中放入一个JSON对象,可能类似于:
{
"brand": "Acura"
"engine": "2.4L"
+ others details
}
我们可以继续添加汽车到阵列。我现在的问题是如何避免再次将同一辆车添加到阵列中。如果我要添加如上所述的相同JSON,则不应添加它。我是否必须遍历数组中的所有现有对象并比较JSON的每个字段?这对我来说听起来像是一项昂贵的操作,还是有更优雅/更快的方法?
谢谢!
答案 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;
}