For循环跳过重复值

时间:2017-04-02 11:40:19

标签: javascript arrays object for-loop

所以我有一个函数从参数中获取一个对象数组。在此示例中,数组中有4个对象。该对象包含键:

{ reportedBy: String, reason: String}

所以输入数组是:

[{reportedBy: "58dd0c8c23ffea1bb767614f", reason: "User insulted me"}, {reportedBy: "58dd0c8c53faea1bb88379a", reason: "User insulted me"}, {reportedBy: "58dd0c8c23ffea1bb767614f", reason: "User violated against FAQs"}, {reportedBy: "58dd0c8c53fabb356fab", reason: "Uses a fake account"}]

所以在这个例子中,我在数组中有四次这个对象。密钥可以有重复的值(比如ID和原因),因此reportedBy字符串可以存在多次,而不是与相同的reason字符串一起存在(这是因为用户可以报告一个项目每个理由一次)。我只想获得所有4个reportedByreason值。所以我使用了for循环:

for (var i = 0; i < object.length; i++) {
   console.log(object[i].reason);
   console.log(object[i].reportedBy);
}

object是函数的参数,包含4个对象。但问题是,这只会让我返回所有值一次,并且没有重复。我只是不明白为什么,因为这有效:

console.log(object[0].reason);
console.log(object[1].reason);
console.log(object[2].reason);
console.log(object[3].reason);

我甚至尝试使用从0到4迭代的for循环,但我仍然没有得到所有4个值,只有3个因为两个是相同的。 for循环跳过重复值是否正常?

1 个答案:

答案 0 :(得分:1)

它对我有用。请参阅下面的代码段以供参考。

如果它不适合您,请创建代码段。 for循环没有问题。

它也适用于您提供的阵列。

&#13;
&#13;
array=[{reportedBy: "58dd0c8c23ffea1bb767614f", reason: "User insulted me"}, {reportedBy: "58dd0c8c53faea1bb88379a", reason: "User insulted me"}, {reportedBy: "58dd0c8c23ffea1bb767614f", reason: "User violated against FAQs"}, {reportedBy: "58dd0c8c53fabb356fab", reason: "Uses a fake account"}];


for (var i = 0; i < array.length; i++) {
   console.log(array[i].reason);
   console.log(array[i].reportedBy);
}
&#13;
&#13;
&#13;