繁体   English   中英

检查对象中是否不存在任何键/值(使用纯js)

[英]Check if an any key/value does not exists in an object (with pure js)

所以说这是我的对象:

var data = {
  key1 : 'a',
  key2 : 'b',
  key3 : 'c'
};

我有一个函数可以像这样加载默认设置:

function defaults() {
  data.key1 = 'a';
  data.key2 = 'b';
  data.key3 = 'c';
  data.key4 = 'd';
}

如何检查是否缺少任何“默认”值?

由于这是标记为jQuery的,最简单的方法是使用$.extend()合并两个对象

 var data = { key1 : 'xxxxxxxx' } var defaults = { key1 : 'a', key2 : 'b', key3 : 'c' }; var results = $.extend(defaults,data); console.log(results) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

用纯JS

  for( key in defaults){
    if (!data.hasOwnProperty(key) && defaults.hasOwnProperty(key)){
        data[key] = defaults[key];
    }
  }

data.key1 = data.key1 || '一种';

加载已经存在的内容。 如果为null,undefined或false,则以任何方式加载“ a”

我尝试了以下方法。 但是有人已经发布=)

var data = {
    key1: 'a'
};
var data_default = {
    key1: 'a',
    key2: 'b',
    key3: 'c',
    key4: 'd'
};

function defaults() {
    for (var key in data_default) {
        if (!data.hasOwnProperty(key) || data[key] == "") {
            data[key] = data_default[key];
        }
    }
}

object.hasOwnProperty可以检查对象密钥是否存在。您具有默认功能,要访问此数据,需要返回。

var data = {
  key1 : 'a',
  key2 : 'b',
  key3 : 'c'
};
function defaults() {
  d = {};
  d.key1 = 'a';
  d.key2 = 'b';
  d.key3 = 'c';
  d.key4 = 'd';
  return d;
}
var object = defaults();
var miss = [];
for(var i in object){   
    if(!data.hasOwnProperty(i)){
        miss.push(i);
    }
}
console.log(miss);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM