Новичок в JavaScript, поэтому, пожалуйста, потерпите меня.
Я пытаюсь создать программу, которая будет проверять объект на наличие нулевых, пустых или неопределенных значений.Похоже, что он работает нормально по большей части, но когда в объекте есть массив, он показывает его как «пустые элементы» при заполнении.
Может ли кто-нибудь показать мне, как изменить мой код, чтобы он проверял, действительно ли массивы действительно пусты?
Мой код выглядит следующим образом:
const myObj =
{ "tags": ["A", "B", "C"],
"shared_with": ["abc", "123"],
"list": [],
"public_jobs": true,
"config": null,
"id": 9406,
"name": "",
}
const removeNotEmpty = (obj) => {
Object.keys(obj).forEach(k => {//for each property of the object
if(typeof obj[k] === 'object' && obj[k] !== null){//if the property is an object
removeNotEmpty(obj[k]);//recurse
}else if(obj[k]){//if property is truthy
delete obj[k];//remove it from the object
}else if(obj[k] == !obj.length){
delete obj[k];
}
});
return obj;
};
// make sure to copy the object if you don't want to modify the first
// (that's what the Object.assign is for)
console.log(removeNotEmpty(Object.assign({},myObj)));
Заранее спасибо.
РЕДАКТИРОВАТЬ: Итак, я включил некоторые изменения в свои коды на основе приведенных ниже предложений, и теперь это мой код
const myObj =
{ "tags": ["A", "B", "C"],
"shared_with": ["abc", "123"],
"list": [],
"public_jobs": true,
"config": null,
"id": 9406,
"name": "",
}
const removeNotEmpty = (obj) => {
Object.keys(obj).forEach(k => {//for each property of the object
if(Object.prototype.toString.call(obj[k]) === '[object Array]'){
delete obj[k];
}else if(typeof obj[k] === 'object' && obj[k] !== null){//if the property
IS an object
removeNotEmpty(obj[k]);//recurse)
}else if(obj[k]){//if property is truthy
delete obj[k];//remove it from the object
}
});
return obj;
};
console.log(removeNotEmpty(Object.assign({},myObj)));//make sure to copy the
object if you don't want to modify the first (that's what the Object.assign
is for)
Проблема в том, что онне отображает пустые массивы, такие как "list: []"?Есть идеи, люди?