过滤 json 个元素,其值存储到另一个对象中
Filter json element with values stored into another object
我有以下 JSON:
var json = [
{
"Key1": some text...,
"Key2": some text...,
"Key3": [
{
"Key": "Key 1",
"Value": "1",
},
{
"Key": "Key 2",
"Value": "1",
}
]
},
{
"Key1": some text...,
"Key2": some text...,
"Key3": [
{
"Key": "Key 1",
"Value": "2",
},
{
"Key": "Key 2",
"Value": "2",
}
]
},
{
"Key1": some text...,
"Key2": some text...,
"Key3": [
{
"Key": "Key 1",
"Value": "3",
},
{
"Key": "Key 2",
"Value": "3",
}
]
},
]
然后我有下面的var
var items = [1, 3];
我需要做的是过滤 json 以仅将 Key 2 值存在的项目显示到项目对象中。我正在尝试执行以下操作:
var res = json.filter(item => items.includes(item.Key3.find(x => x.Key === "Key 2").Value));
以上代码返回空结果 ([])。还有另一种方法来处理这个吗?我做错了什么?
var json = [
{
"Key1":"some text...",
"Key2":"some text...",
"Key3":[
{
"Key":"Key 1",
"Value":"1"
},
{
"Key":"Key 2",
"Value":"1"
}
]
},
{
"Key1":"some text...",
"Key2":"some text...",
"Key3":[
{
"Key":"Key 1",
"Value":"2"
},
{
"Key":"Key 2",
"Value":"2"
}
]
},
{
"Key1":"some text...",
"Key2":"some text...",
"Key3":[
{
"Key":"Key 1",
"Value":"3"
},
{
"Key":"Key 2",
"Value":"3"
}
]
}
];
var items = [1, 3];
var res = json.filter(item => items.includes(item.Key3.find(x => x.Key === "Key 2").Value));
console.log(res);
includes()
执行严格的相等性检查。因此,如果 items
包含数字但 item.Key3
包含字符串,则不匹配。
您应该将 Value
中的字符串解析为整数。
var res = json.filter(item => items.includes(parseInt(item.Key3.find(x => x.Key === "Key 2").Value)));
我有以下 JSON:
var json = [
{
"Key1": some text...,
"Key2": some text...,
"Key3": [
{
"Key": "Key 1",
"Value": "1",
},
{
"Key": "Key 2",
"Value": "1",
}
]
},
{
"Key1": some text...,
"Key2": some text...,
"Key3": [
{
"Key": "Key 1",
"Value": "2",
},
{
"Key": "Key 2",
"Value": "2",
}
]
},
{
"Key1": some text...,
"Key2": some text...,
"Key3": [
{
"Key": "Key 1",
"Value": "3",
},
{
"Key": "Key 2",
"Value": "3",
}
]
},
]
然后我有下面的var
var items = [1, 3];
我需要做的是过滤 json 以仅将 Key 2 值存在的项目显示到项目对象中。我正在尝试执行以下操作:
var res = json.filter(item => items.includes(item.Key3.find(x => x.Key === "Key 2").Value));
以上代码返回空结果 ([])。还有另一种方法来处理这个吗?我做错了什么?
var json = [
{
"Key1":"some text...",
"Key2":"some text...",
"Key3":[
{
"Key":"Key 1",
"Value":"1"
},
{
"Key":"Key 2",
"Value":"1"
}
]
},
{
"Key1":"some text...",
"Key2":"some text...",
"Key3":[
{
"Key":"Key 1",
"Value":"2"
},
{
"Key":"Key 2",
"Value":"2"
}
]
},
{
"Key1":"some text...",
"Key2":"some text...",
"Key3":[
{
"Key":"Key 1",
"Value":"3"
},
{
"Key":"Key 2",
"Value":"3"
}
]
}
];
var items = [1, 3];
var res = json.filter(item => items.includes(item.Key3.find(x => x.Key === "Key 2").Value));
console.log(res);
includes()
执行严格的相等性检查。因此,如果 items
包含数字但 item.Key3
包含字符串,则不匹配。
您应该将 Value
中的字符串解析为整数。
var res = json.filter(item => items.includes(parseInt(item.Key3.find(x => x.Key === "Key 2").Value)));