【问题标题】:sorting and removing keys with null values排序和删除具有空值的键
【发布时间】:2011-07-17 09:10:07
【问题描述】:
  • 如何删除具有空值的键并形成新的 json。
  • 如何迭代这个响应......我想在哪里显示......这个键 ==> 对应的值。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    1:这将删除任何虚假值,即 Null、未定义或空字符串。不过,您可以专门检查空值。确保你阅读并理解 delete 的作用,它会给很多人带来麻烦。

    for(var key in someObject) {
        if(!someObject[key]) {
            delete someObject[key];
        }
    }
    

    2:您可以像这样迭代对象的所有属性和值:

    for(var key in someObject) {
        console.log("The value of " + key + " is " + someObject[key]);
    }
    

    【讨论】:

    • 这不会删除假键吗?
    【解决方案2】:

    对于初学者,请修复您的 javascript 对象,因为您发布的内容充满了错误。一旦你有一个有效的数组:

    var values = [{
        'SPO2': 222.00000,
        'VitalGroupID': 1152,
        'Temperature': 36.6666666666667,
        'DateTimeTaken': '/Date(1301494335000-0400)/',
        'UserID': 1,
        'Height': 182.88,
        'UserName': null,
        'BloodPressureDiastolic': 80,
        'Weight': 100909.090909091,
        'TemperatureMethod': 'Oral',
        'Resprate': null,
        'HeartRate': 111,
        'BloodPressurePosition': 'Standing',
        'VitalSite': 'Popliteal',
        'VitalID': 1135,
        'Laterality': 'Right',
        'HeartRateRegularity': 'Regular',
        'HeadCircumference': '',
        'BloodPressureSystolic': 120,
        'CuffSize': 'XL'
    }, {
        'SPO2': 100.00000,
        'VitalGroupID': 1113,
        'Temperature': 32.7777777777778,
        'DateTimeTaken': '/Date(1299856980000-0500)/',
        'UserID': 1,
        'Height': 0,
        'UserName': 'Admin',
        'BloodPressureDiastolic': 78,
        'Weight': 49895.1607,
        'TemperatureMethod': '',
        'Resprate': null,
        'HeartRate': null,
        'BloodPressurePosition': 'Sitting',
        'VitalSite': '',
        'VitalID': 1096,
        'Laterality': '',
        'HeartRateRegularity': 'Regular',
        'HeadCircumference': '',
        'BloodPressureSystolic': 120,
        'CuffSize': ''
    }];
    

    然后你可以循环遍历它:

    for (var i = 0; i < values.length; i++) {
        // this will run for each element of the initial array
    
        for (var propertyName in values[i]) {
            // this will run for each property of the element
            var propertyValue = values[i][propertyName];
    
            if (propertyValue == null) {
                // if the value is null remove it
                delete values[i][propertyName];
            } else {
                console.log('name: ' + propertyName + ', value: ' + propertyValue);   
            }
        }
    }
    

    Demo.

    【讨论】:

    【解决方案3】:

    删除属性:

    if (objectName.propertyName === null) {
        delete objectName.propertyName;
    }
    

    迭代抛出属性:

    for (var key in objectName) {
        document.write(objectName[key]);
    }
    

    【讨论】:

    • undefinednull 具有相似的语义。使用==更稳定
    【解决方案4】:
    var array_of_json_hashes;
    
    var result = [];
    
    for(var i = 0; i < array_of_json_hashes.length; i++) {
      result[i] = {};
      var h = array_of_json_hashes[i];
      for (var key in h) {
        console.log(key);
        console.log(h[key]);
        if (h.hasOwnProperty(key)) {
          if(h[key]) {
            result[i][key] = h[key];
          }
        }
      }
    }
    
    console.log(result);
    

    【讨论】:

      【解决方案5】:

      这可能对你有帮助:

      1) 测试 = ["1","2","3","4","",""];
      2) var delete = JSON.stringify(test);

      case1) delete = delete.replace(/\,""/g,'');

      case2) delete = delete.replace(/\," "/g,'');

      case3) delete = delete.replace(/\,null/g,'');

      3) var 结果 = JSON.parse(delete);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-01
        • 1970-01-01
        • 2017-12-08
        • 1970-01-01
        • 2014-11-13
        • 2019-10-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多