【问题标题】:JS or jQuery how to delete key-value pairJS或jQuery如何删除键值对
【发布时间】:2017-01-11 20:52:04
【问题描述】:

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

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

改变:

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

【问题讨论】:

标签: javascript jquery object key-value


【解决方案1】:

这有两个部分:

  1. 循环遍历对象的属性

  2. 从对象中删除属性

第一个方法有很多,this question's answers 介绍了。假设您只关心“自己的”(非继承)属性,我可能会使用 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));

【讨论】:

    【解决方案2】:

    您可以使用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

    【讨论】:

      【解决方案3】:
      var yourObj={style: "fruit", origin: "Thailand", day: "18d", color: "", weight: null}
      
      for(var attr in yourObj){
        if(!yourObj[attr]){
          delete yourObj[attr]
        }
      }
      

      【讨论】:

        【解决方案4】:

        可以使用以下代码完成:

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

        【讨论】:

        • 此答案已被标记为低质量。如果它回答了问题,请考虑添加一些文字来解释它是如何工作的。
        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-22
          • 2018-03-17
          • 1970-01-01
          • 2017-04-01
          • 2016-01-01
          • 1970-01-01
          • 2015-07-08
          • 1970-01-01
          相关资源
          最近更新 更多