JS或jQuery如何删除键值对

JS or jQuery how to delete key-value pair

使用JS或jQuery如何删除值为“Null” & ""类型的键值对。 例如 之前:

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

改变:

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

这有两个部分:

  1. 遍历对象的属性

  2. 从对象中删除一个属性

第一个有很多方法,this question's answers 已涵盖。假设您只关心 "own"(非继承)属性,我可能会使用 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));

您可以使用for..in 遍历循环来查找哪个键具有null""

然后使用delete删除key

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

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

for(var attr in yourObj){
  if(!yourObj[attr]){
    delete yourObj[attr]
  }
}

可以使用此代码完成:

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]);
 }
}

一个简单的解决方案,通过迭代抛出对象的键并将匹配的属性推送到结果数组中:

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' }