【发布时间】:2020-03-16 11:28:28
【问题描述】:
我有一个包含重复对象的数组,比如说:[A, A, B, C]。使用 for 循环,我将重复项的名称连接到一个字符串中。我试过这个:
for (var i = 0; i < myArray.data.length - 1; i ++) {
for (var j = i + 1; j < myArray.data.length; j ++) {
if (myArray.data[i].id == myArray.data[j].id) {
identicalObjects = identicalObjects + myArray.data[i].name + ", " + myArray.data[j].name;
}
}
}
这打印:“A,A”,这是正确的。但是,如果数组是 [A,A,A,B,C],它会打印“A,A,A,A,A,A”,这是不正确的,只有 3 个重复而不是 6。我不能只是剪切字符串,因为在某些情况下,不同的对象(具有不同的 id)作为重复项返回,我需要知道它们的名称才能知道它们到底是哪些。
我想到的一个解决方案是将名称存储在数组中,如果相同名称的数量大于 2,则将其他名称的数量减半,然后转换为字符串。还有什么更简单有效的方法吗?
【问题讨论】:
-
你添加了两次
myArray.data[i].name,试试identicalObjects += (identicalObjects ? ", " : "") + myArray.data[i].name
标签: javascript loops duplicates