Я новичок в lodash и создал функцию, которая удаляет ключ из объекта, где значение равно нулю или пусто.Но когда я передаю свой объект, который содержит некоторую часть в виде массива, он удаляет массив и преобразует его в объект.
Ниже приведен мой код, который я попробовал:
_.mixin({ 'removeFalsies': this.removeFalsies });
_.mixin({
removeEmptyObjects: this.removeEmptyObjects
});
removeFalsies (obj) {
return _.transform(obj, function (o, v, k) {
if (v && typeof v === 'object') {
if (v !== '') {
o[k] = _.removeFalsies(v);
}
} else if (v === false) {
o[k] = v;
} else if (v) {
o[k] = v;
}
});
}
removeEmptyObjects (obj) {
return _(obj)
.pickBy(_.isObject)
.mapValues(_.removeEmptyObjects)
.omitBy(_.isEmpty)
.assign(_.omitBy(obj, _.isObject))
.value();
}
Ниже приведен JSONкоторый я предоставляю, чтобы опустить пустое и нулевое значение, поэтому он должен удалить все свойства из объекта «smallMap» как серии, выровнять пустой объект и должен также удалить высоту.
С другой стороны, он долженудалить "mid" из хитростей, а также series1 из дочернего массива.
var finalProp = {
"smallMap": {
"series": {},
"align": {},
"height": ""
},
"series": [
{
"heatRules": [
{
"min": "#555",
"mid": null
}
],
"mapPolygons": {
"tooltipText": "{name}",
"togglable": true
},
"id": "value"
}
],
"children": [
{
"type": "HeatLegend",
"width": "100%",
"series1": null
}
]
}
_.removeEmptyObjects(_.removeFalsies(finalProp));
Удаляет все как положено, но только 1 проблема - преобразование массива в объект.
Ниже приведенонеправильный вывод вместо серии: {0: {}} должен содержать серию: [{}], а вместо потомков: {0: {}} он должен предоставлять [{}].
{
"series": {
"0": {
"heatRules": {
"0": {
"min": "#555"
}
},
"mapPolygons": {
"tooltipText": "{name}",
"togglable": true
},
"id": "value"
}
},
"children": {
"0": {
"type": "HeatLegend",
"width": "100%"
}
}
}
iЯ не могу найти, где проблема, любая помощь приветствуется.