gpt4 book ai didi

javascript - 如何将json数组对象转换为json数组

转载 作者:行者123 更新时间:2023-12-03 00:20:00 25 4
gpt4 key购买 nike

** 场景:**

  • 我正在使用 lodash 从 JSON 中删除空 key 。
  • 但是当它删除键时,它会将我的数组转换为对象,例如

    {
    "projection": "Miller",
    "series": [
    {
    "mapPolygons": {
    "states": {
    "hover": {
    "properties": {
    "fill": "#67b7dc"
    }
    }
    }
    },
    "heatRules": {
    "0": {
    "min": "#a82626",
    "max": "#AAAA00"
    }
    },
    "data": {
    "0": {
    "id": "US",
    "value": 3461.37
    },
    "1": {
    "id": "DE",
    "value": 2858.09
    },
    "2": {
    "id": "NO",
    "value": 3418.87
    },
    "3": {
    "id": "ES",
    "value": 3522.46
    }
    }
    }
    ],
    "zoomControl": {
    "slider": {
    "height": 100
    }
    },
    "titles": {
    "0": {
    "fontSize": 20
    }
    },
    "homeZoomLevel": 1
    }

问题:

如果你在上面的代码中看到 heatRules 属性,它是一个数组,在转换后它被转换为 0 的对象,同样,如果你看到 data 属性,它会做同样的事情,如果你看到 Titles 属性,它也会做同样的事情。

我使用下面的链接代码来删除空对象和空对象:

Why lodash converts my array into object?

输入数据:

    {
"projection": "Miller",
"series": [
{
"mapPolygons": {
"states": {
"hover": {
"properties": {
"fill": "#67b7dc",
"size": ""
}
}
}
},
"heatRules": [
{
"min": "#a82626",
"max": "#AAAA00",
"fill": null
}
],
"data": [
{
"id": "US",
"value": 3461.37
},
{
"id": "DE",
"value": 2858.09
},
{
"id": "NO",
"value": 3418.87
},
{
"id": "ES",
"value": 3522.46
}
]
}
],
"zoomControl": {
"slider": {
"height": 100
}
},
"titles": [
{
"fontSize": 20,
"fontColor": ""
}
],
"homeZoomLevel": 1
}

输出数据:

{
"projection": "Miller",
"series": [
{
"mapPolygons": {
"states": {
"hover": {
"properties": {
"fill": "#67b7dc"
}
}
}
},
"heatRules": [
{
"min": "#a82626",
"max": "#AAAA00"
}
],
"data": [
{
"id": "US",
"value": 3461.37
},
{
"id": "DE",
"value": 2858.09
},
{
"id": "NO",
"value": 3418.87
},
{
"id": "ES",
"value": 3522.46
}
]
}
],
"zoomControl": {
"slider": {
"height": 100
}
},
"titles": [
{
"fontSize": 20
}
],
"homeZoomLevel": 1
}

如果您看到上面的输出,它会从属性 -> 大小、heatRulues -> 填充中删除 null 和空白键,并从标题中删除 fontColor。

最佳答案

如果您的代码使用

typeof v === '对象'

对于数组,它将返回true

要检查数组,请使用

Array.isArray(t)

array视为object并迭代键将导致您的问题。

递归但不处理数组的示例函数

function removeFalsies(obj) {
return _.transform(obj, function(o, v, k, l) {
if (Array.isArray(obj) {
for (let arrItem of obj) {
removeFalsies(arrItem);
}
return
}
// else not array...
})
}

关于javascript - 如何将json数组对象转换为json数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54359583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com