簡體   English   中英

解析JSON,查找值匹配項並存儲在數組中

[英]Parse JSON, find matches of values and store in array

我在弄清楚如何限制輸出方面遇到困難。 我必須比較對象中每個屬性的值,但是每個ID僅需要1個輸出。

有什么想法嗎?

//示例JSON

var obj1 = {
"Summary" : 
[
    {
        "ID" : "1234", 
        "Name" : "John", 
        "Status" : "Green",
    },
    {
        "ID" : "5678", 
        "Name" : "Mike", 
        "Status" : "Green",
    },
    {
        "ID" : "9012", 
        "Name" : "Tom", 
        "Status" : "Red",
    }

]
};

//我的代碼

var attributesvalues = ["Mike", "Green", "Red"];
var sg1 = [];
var k;
var l;


//push name of each attribute value to a new array
//one example
sg1.push(attributesvalues[0]);

 //go through each ID, if name value exist, push the #1, if not, push nothing
 for (k = 0; k < obj1.Summary.length; k++) {
 for (l in obj1.Summary[k]) {
    if (sg1[0] == obj1.Summary[k][l]){
    sg1.push("1");
    }
    else{
    sg1.push("");   
    }
 }

 }

輸出應該看起來像這樣-我只想要4個值,每個ID(3)的名稱+ 1或“”

sg1 = [“ Mike”,“”,“ 1”,“”]
sg2 = [“綠色”,“ 1”,“ 1”,“”]

相反,我得到這個-每個屬性的名稱+ 1或“”。

sg1 = [“ Mike”,“”,“”,“”,“”,“ 1”,“”,“”,“”,“”]
sg2 = [“綠色”,“”,“”,“ 1”,“”,“,” 1“,”“,”“,”“]

您可以提供的任何其他指針或技巧將不勝感激。 我仍在嘗試擺脫JS的困擾。

在完成整個for-in循環之前,您不知道是否有匹配項。

var found;

for (k = 0; k < obj1.Summary.length; k++) {
    found = "";
    for (l in obj1.Summary) { 
        if (obj1.Summary[i][l] == sg1[0]) {
            found = "1";
            break;
        }
    }
    sg1.push(found);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM