我对 JavaScript 很陌生,但对 JSON 和对象也很陌生。
我需要过滤多个键上的嵌套 JSON。
我正在努力
const filteredEntries = oldJSON.filter(([key, value]) => {
return key === "id" && key === "label" && key==="options"
});
但我明白
object is not iterable
我知道有很多此类问题,但我无法让其中任何一个问题适用于我的特定 JSON 格式。
如有任何帮助,我们将不胜感激。
谢谢
const oldJSON = [
{
"id": "c3c6f410f58e5836431b473ebcf134756232d04f2bf35edff8",
"component": "checkbox",
"customFields": [
],
"index": 0,
"label": "Sector2",
"options": {
"62f92fab79ac81d933765bd0bbc4a1f5ea26cb3a088bcb4e6e": {
"index": 0,
"value": "Bob",
"label": "Bob",
"count": 1
},
"2fe91aa3567c0d04c521dcd2fc7e40d7622bb8c3f594d503da": {
"index": 1,
"value": "Student",
"label": "Student",
"count": 1
},
"c59ea1159f33b91a7f6edc6925be5e373fc543e4": {
"index": 2,
"value": "BBB",
"label": "BBB",
"count": 1
},
"c59ea1159f33b91a7f6edc6925be5e373fc54AAA": {
"index": 3,
"value": "Orange Duck",
"label": "Orange Duck",
"count": 1
}
},
"required": false,
"validation": "/.*/",
"imported": false
},
{
"id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e951709485",
"component": "textInput",
"customFields": [
],
"index": 1,
"label": "Brown Cow",
"options": {
},
"required": false,
"validation": "/.*/",
"imported": false
},
{
"id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e95170ZZZ",
"component": "textInput",
"customFields": [
],
"index": 1,
"label": "Red Fish",
"options": {
},
"required": false,
"validation": "/.*/",
"imported": false
},
];
const filteredEntries = oldJSON.filter(([key, value]) => {
return key === "id" && key === "label" && key==="options"
});
console.log(filteredEntries )
预期输出是
[ {
"id": "c3c6f410f58e5836431b473ebcf134756232d04f2bf35edff8",
"label": "Sector2",
"options": {
"62f92fab79ac81d933765bd0bbc4a1f5ea26cb3a088bcb4e6e": {
"index": 0,
"value": "Bob",
"label": "Bob",
"count": 1
},
"2fe91aa3567c0d04c521dcd2fc7e40d7622bb8c3f594d503da": {
"index": 1,
"value": "Student",
"label": "Student",
"count": 1
},
"c59ea1159f33b91a7f6edc6925be5e373fc543e4": {
"index": 2,
"value": "BBB",
"label": "BBB",
"count": 1
},
"c59ea1159f33b91a7f6edc6925be5e373fc54AAA": {
"index": 3,
"value": "Orange Duck",
"label": "Orange Duck",
"count": 1
}
},
{
"id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e951709485",
"label": "Brown Cow",
"options": {
}
},
{
"id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e95170ZZZ",
"label": "Red Fish",
"options": {
}];
您的主要问题在于您的条件,您的条件 key === "id" && key === "label" && key === "options" 在逻辑上是不可能的,因为单个键不能等于多个不同的字符串同一时间。
代码应该是这样的:
const filteredEntries = oldJSON.filter(item =>
item.id && item.label && item.options
).map(({ id, label, options }) => ({ id, label, options }));
console.log(filteredEntries);