0
var names = [{id:1,name:"name1"}, {id:2,name:"name2"}, {id:3,name:"name1"}, {id:4,name:"name1"}, {id:5,name:"name2"}, {id:6,name:"name3"}]

これは、javascript のオブジェクトの配列です。すべての重複と、同じ名前のプロパティを持つ個人を取り出して、それらを配列のオブジェクトに配置する方法を探しています。重複したオブジェクトを除外することが私の主な関心事です。可能であれば、jQuery でこれを行うことができれば問題ありません。

{
    [{id:1,name:"name1"},{id:3,name:"name1"}{id:4,name:"name1"}]
    [{id:2,name:"name2"},{id:5,name:"name2"}] 
    [{id:6,name:"name3"}]
}
4

3 に答える 3

1

次のようなことができます。

var names = [{id:1,name:"name1"}, {id:2,name:"name2"}, {id:3,name:"name1"}, {id:4,name:"name1"}, {id:5,name:"name2"}, {id:6,name:"name3"}]

var sorted = {};

for (var i=0; i < names.length; i++) {
    if (!sorted[names[i].name]) {
        sorted[names[i].name] = [];
    }
    sorted[names[i].name].push(names[i]);
}

ここにフィドルがあります。

たとえば、 を含むすべてのアイテムの配列が必要な場合はname == "name1"、次のようにします。

var allName1s = sorted["name1"];
于 2013-10-18T15:12:35.867 に答える
0

データを有効なものと重複するものに並べ替えたい場合は、次のようにします。

Javascript:

<script type="text/javascript">

var names = [{id:1,name:"name1"}, {id:2,name:"name2"}, {id:3,name:"name1"}, {id:4,name:"name1"}, {id:5,name:"name2"}, {id:6,name:"name3"}]

var parsed_names = parseNames(names);

console.log(parsed_names);

function parseNames(names) 
{
    var parsed_data = [];
    var duplicate_data = [];
    var name_list = [];
    for (var i = 0; i < names.length; i++) {
        if (!inArray(names[i].name, name_list)) {
            parsed_data.push(names[i]);
        } else {
            duplicate_data.push(names[i]);
        }
        name_list.push(names[i].name);
    }
    return {
        'ParsedData': parsed_data,
        'DuplicateData': duplicate_data
    };
}

function inArray(needle, haystack) {
    for (var i = 0; i < haystack.length; i++) {
        if (haystack[i] === needle) {
            return true;
        }
    }
    return false;
}

</script>

コンソール出力 (デバッグ):

ここに画像の説明を入力

于 2013-10-18T15:18:11.013 に答える