0

我正在尝试从行中获取唯一数据。

我的数据

name  title
tim    1
tim    1
tim    2
tim    3
time   3
jenny  5
jenny  5
jenny  6
jenny  7

我的目标是使用 javascript 显示我的表格

tim    1
tim    2
time   3
jenny  5
jenny  6
jenny  7

我知道更改数据结构或选择数据的方式很容易,但我无权访问数据库,所以我需要在 javascript 中弄清楚

我的第一步是将所有独特的东西推title到我的peopleArray

1
2
3
5
6
7

我试过的代码。

 for(var a=0; a<results.length; a++){
        if(results[(a+1)]){
             if(a==0 || results[a].title != results[(a+1)].title){

                peopleArray.push(results[(a)].title)
             }
         }
      }

我的代码并没有真正起作用,我在这里存货。有人对此有提示吗?非常感谢!

4

3 回答 3

1

对于不需要对列表进行排序的内容,您可以使用以下内容:

http://jsfiddle.net/4dvfq/1/

var results = [{"name": "tim", "title": "1"},
               {"name": "jenny", "title": "2"},
               {"name": "tim", "title": "1"},
               {"name": "jenny", "title": "1"}];
// Should return "tim 1", "jenny 2", "jenny 1" items

function getUniques(arr) {
    var i = 0;
    var len = arr.length;
    var found = {};
    var ret = [];

    for (; i < len; i++) {
        var cur = arr[i];
        var name = cur.name;
        var title = cur.title;
        var name_title = name + title;

        if (!(name_title in found)) {
            ret.push(cur);
            found[name_title] = 1;
        }
    }
    return ret;
}

console.log(getUniques(results));
于 2012-12-13T19:52:57.257 回答
1

如果它已经像您的问题一样排序,那么您可以使用 Array.filter():

data = data.filter(function (d, i) {
    var next = data[i+1] || {name: '', title: ''};
    return d.name != next.name || d.title != next.title;
});

如果它还没有按照您的问题排序,请先执行以下操作:

data = data.sort(function (a, b) {
    return a.name < b.name ? -1 : a.name == b.name ? 0 : 1;
});
于 2012-12-13T19:44:23.630 回答
0
function uniquify(results) {    
    var peopleArray = [];
    for (var a = 0; a < results.length; a++) {
        if (peopleArray.indexOf(JSON.stringify(results[a])) == -1) {
            peopleArray.push(JSON.stringify(results[a]));
        }
    }
    return peopleArray.map(function(val) {
        return JSON.parse(val);
    });
}

这与排序顺序无关,并且足够灵活,可以与其他模式一起使用。这是一个使用您的数据的演示:http: //jsfiddle.net/w4cKg/

于 2012-12-13T19:42:53.500 回答