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

データ構造やデータの選択方法を簡単に変更できることはわかっていますが、DB へのアクセス権がないため、javascript で把握する必要があります。

私の最初のステップは、すべての一意のtitleものを myにプッシュすること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 に答える