Используя JS или jQuery, как удалить пару "ключ-значение", значение которой имеет тип «Null» & "". например перед:

Object {style: "fruit", origin: "Thailand", day: "18d", color: "", weight: null}

Изменить:

Object {style: "fruit", origin: "Thailand", day: "18d"}
3
duskdeep 4 Сен 2016 в 10:05

5 ответов

Лучший ответ

Есть две части к этому:

  1. Цикл по свойствам объекта

  2. Удалить свойство из объекта

Есть много способов сделать первое, описанное в ответы на этот вопрос. Предполагая, что вы заботитесь только о «собственных» (не унаследованных) свойствах, я бы, вероятно, использовал Object.keys, чтобы получить массив имен свойств, а затем зациклить их.

Второе делается с помощью оператора delete.

Так:

Object.keys(theObject).forEach(function(key) {
    var value = theObject[key];
    if (value === "" || value === null) {
        delete theObject[key];
    }
});

Живой пример:

var theObject = {
  style: "fruit",
  origin: "Thailand",
  day: "18d",
  color: "",
  weight: null
};
console.log("Before:", JSON.stringify(theObject, null, 2));
Object.keys(theObject).forEach(function(key) {
  var value = theObject[key];
  if (value === "" || value === null) {
    delete theObject[key];
  }
});
console.log("After:", JSON.stringify(theObject, null, 2));
1
Community 23 Май 2017 в 12:32

Вы можете использовать for..in, чтобы пройти через цикл, чтобы найти, какой ключ имеет null или "".

Затем используйте delete, чтобы удалить ключ

var myObj = {
  style: "fruit",
  origin: "Thailand",
  day: "18d",
  color: "",
  weight: null
}

for(var keys in myObj){
 if(myObj[keys] ===null || myObj[keys] === ""){
  delete myObj[keys]
 }
}
console.log(myObj)

JSFIDDLE

1
brk 4 Сен 2016 в 07:15

Простое решение - перебрасывать ключи вашего объекта и выдвигать соответствующие свойства в полученном массиве:

var input = {style: "fruit", origin: "Thailand", day: "18d", color: "", weight: null};
var keys = Object.keys(input);
var result = {};
keys.forEach(key => {if (input[key] != null && input[key] != "") result[key] = input[key]});
console.log(result); // { style: 'fruit', origin: 'Thailand', day: '18d' }
0
kevin ternet 4 Сен 2016 в 07:18
var yourObj={style: "fruit", origin: "Thailand", day: "18d", color: "", weight: null}

for(var attr in yourObj){
  if(!yourObj[attr]){
    delete yourObj[attr]
  }
}
-1
khem poudel 4 Сен 2016 в 07:12

Это можно сделать с помощью этого кода:

var map = {style: "fruit", origin: "Thailand", day: "18d", color: "", weight: null};

for (var i in map){
    if(map[i]==null || map[i]==""){
       delete(map[i]);
 }
}
-1
ArtOfCode 4 Сен 2016 в 17:25