循环'不同'的值并忽略重复 - javascript

时间:2014-11-10 17:49:58

标签: javascript loops for-loop

我完全重写了这个问题,以便更好地解释它,

我有一个对象列表,如图所示。

screenshot of console.log(point) as in the code below

这些都具有属性statusCode:62467但是旅程属性如下:0,1,2,3,3,4,4,4,4

我想循环遍历这些对象并返回具有相同旅程号的重复对象的第一个。

所以我想返回大胆的对象: 0 1 2 3 ,3,的 4 下,4,4,4

    $.each(points, function (index, point) {          
                    for (i = 0; i < journeyNumber.length; i++) {
                          if (point.k.journey === journeyNumber[i] && point.k.statusCode === '62467') {
                                console.log(point);
                                      latlngs.push(point.j.aa.k);
                                      latlngs.push(point.j.aa.B);
                          }
                     }
    });

屏幕截图是console.log(point)的日志,所以理想情况下我想要另一个循环,它只返回相同旅程号的第一个对象。

希望这是有道理的,谢谢你的时间。

2 个答案:

答案 0 :(得分:2)

您可以跟踪已经处理过哪些号码,并在找到它们的副本时跳过它们。

var already_seen = []; //container for logging unique values
$.each(points, function(index, point) {
    if (already_seen.indexOf(point) !== -1) return; //if already in container, skip
    already_seen.push(point); //log unseen values in the container
    for (i = 0; i < journeyNumber.length; i++) {
        if (journey === journeyNumber[i] && statusCode === '62467') {
            latlngs.push(lat);
            latlngs.push(lng);
            console.log(journey)
        }
    }
});

答案 1 :(得分:0)

如何使用filter

var unique = [];
function onlyUnique(value, index, self) { 
    return self.indexOf(value) === index;
}
$.each(points, function(index, point) {
    for (i = 0; i < journeyNumber.length; i++) {
        if (journey === journeyNumber[i] && statusCode === '62467') {
            latlngs.push(lat);
            latlngs.push(lng);
            unique.push(journey)
        }
    }
    console.log(unique.filter(onlyUnique));
});