0

我有一个名为的数组newposts

我遍历它,如果它满足某些条件,我将它添加到另一个数组中:

for (newpost in newposts){
    if (!(  newposts[newpost][0] in currentposts )){
        var triploc1 = locations[newposts[newpost][1]].location;
        var triploc2 = locations[newposts[newpost][2]].location;
        var detour_distance = fourpoint_distance(newloc1, triploc1, triploc2, newloc2);
        if (worthwhile_detour(original_distance,detour_distance)){
            currentposts.push(posts[newposts[newpost][0]])
        }
    }
}

第二行用于检查重复项(newposts[newpost][0])是一个 ID。当我写它时,我忘记了 currentposts 是一个数组。显然,这是行不通的。我需要 currentposts 是一个数组,因为就在下面我对它进行排序。选择完成后,我当然可以将其转换为数组。但我是 javascript 新手,相信有人可能知道更好的方法来做到这一点。

function sortposts(my_posts){
    my_posts.sort(function(a, b) {
        var acount = a.sortvar;
        var bcount = b.sortvar;
        return (bcount-acount);
    });

}
4

1 回答 1

1

我不确定你想要的目标是什么,但我可以尝试为你清理它。请注意,我正在使用 underscore.js 库,因为它使处理数组变得非常容易:) 如果您不能将underscore.js包含到您的项目中,请告诉我,我会在“纯”javascript :)

_.each(newposts, function(item) {
    if ( _.indexOf(currentposts, posts[item[0]]) >= 0 ) {
        var triploc1 = locations[item[1]].location;
        var triploc2 = locations[item[2]].location;

        var detour_distance = fourpoint_distance(newloc1, triploc1, triploc2, newloc2);

        if (worthwhile_detour(original_distance, detour_distance)){
            currentposts.push(posts[item[0]])
        }
    }
});

_.sortBy(currentposts, function(item) {
    return item.sortvar;
});

但是,我不得不质疑,为什么您要使用这么多数组(newposts、locations、posts 等)?他们都需要吗?

于 2012-07-16T16:03:38.823 回答