解析 JSON,查找值匹配项并存储在数组中

Parse JSON, find matches of values and store in array

本文关键字:存储 数组 JSON 查找 解析      更新时间:2023-09-26

我很难弄清楚如何限制我的输出。 我必须比较对象中每个属性的值,但是我只想要每个 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("");   
    }
 }
 }

输出应如下所示 - 我只需要每个 ID(3) 的 4 个值,name + a 1 或"

sg1 = ["迈克", ", "1", "]
sg2 = ["绿色

", "1", "1", "]

相反,我得到了这个 - 每个属性的名称 + 1 或"。

sg1 = ["迈克", ", ", ", "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);
}