我有JSON對象的數組像一個新的數組,以便使用jQuery/JavaScript的我在對象的數組組值,以及如何將創建對象的從組
var dataSet1 = [{
"id": "1",
"engine": "Trident",
"browser": "Internet Explorer 4.0",
"platform": "Win 95+",
"version": "5",
"grade": "X"
}, {
"id": "2",
"engine": "Trident",
"browser": "Internet Explorer 4.0",
"platform": "Win 95+",
"version": "5",
"grade": "A"
}, {
"id": "3",
"engine": "Trident",
"browser": "Internet Explorer 4.0",
"platform": "Win 95+",
"version": "4",
"grade": "X"
},
{
"id": "4",
"engine": "Trident",
"browser": "Internet Explorer 4.0",
"platform": "Win 95+",
"version": "5",
"grade": "A"
}];
我想通過該環數據集並創建一個新的對象陣列,合併具有類似「等級」屬性的對象,並保留其關聯的「id」和「version」值的列表,如
OLD具有「等級」屬性等於'X'
{
"id": "1",
"engine": "Trident",
"browser": "Internet Explorer 4.0",
"platform": "Win 95+",
"version": "5",
"grade": "X"
}
{
"id": "3",
"engine": "Trident",
"browser": "Internet Explorer 4.0",
"platform": "Win 95+",
"version": "4",
"grade": "X"
}
與 「品位」 屬性等於 'X' 新對象
{
"ids":{"id":"1","id":"3"}
"engine": "Trident",
"browser": "Internet Explorer 4.0",
"platform": "Win 95+",
"versions":{ "version":"4", "version":"5"}
"grade": "X"
}
Im相當肯定我必須使用$。每次和$ .grep功能,像這樣
$.each(dataSet1, function (index, value) {
tsaGrade = dataSet1[index].grade;
result = $.grep(dataSet1, function (e) {
return e.grade == tsaGrade;
})
並將ID和版本放在新數組中,但是我不知道如何防止每個循環排除下次循環訪問數據集時已分組的值。
新的對象是無效的,如圖所示。 {}對象將鍵映射到值。使用相同的密鑰會覆蓋舊密鑰的數據。也許你想使用包含數組的值{「IDS」:[1,3],「版本」:[4,5],...}對象 – Paul
我不知道你的使用情況,但這個新對象將很難與之合作。如果值不匹配,你需要爲每個屬性創建陣列(見@保羅的評論),你會需要跟蹤indicies的,當您稍後使用該對象。從長遠來看,你的第一種方法可能會更容易。 – cfs
或者這些值可能是維護每個值的計數的對象。就像{「ids」:{「1」:1,「3」:1}}意味着我看過id = 1一次,id = 3一次。 – Paul