检查关键字是否存在于对象javascript中

时间:2019-07-02 09:36:45

标签: javascript html arrays object ecmascript-6

我有一个对象,如果不存在键,则使用javascript将其设置为null。

如果键在对象obj中不存在,例如ccy不存在,cn MYCA,则如何使用javascript分配和设置为null

var obj=[{
  "cn": "TH",
  "lang": "thai",
  "bank": "yes",
  "ccy": "THB"
},{
   "cn": "MY",
   "lang": "malay",
},{
   "cn": "CA",
   "lang": "english",
   "bank": "yes"
}]

render(){
  obj.map(e=>
  return html`
    <h1>${e.cn}</h1>
    <h5>${e.lang}</h5>
    <h6>${e.ccy}</h6>
`
 )
}

6 个答案:

答案 0 :(得分:4)

最简单的方法是,只要您确定e.ccy不会虚假({{1},falseundefinednull0"")将使用逻辑或运算符NaN

||

答案 1 :(得分:3)

如果您不想将默认的后备值写入模板并希望保持模板干净,还可以在渲染之前对数据进行预处理并设置缺失值:

var obj = [{
  "cn": "TH",
  "lang": "thai",
  "bank": "yes",
  "ccy": "THB"
}, {
  "cn": "MY",
  "lang": "malay",
}, {
  "lang": "english",
  "bank": "yes"
}]

obj = obj.map(({
  cn = null,
  ccy = null,
  ...rest
}) => Object.assign(rest, { cn, ccy }))

console.log(obj)

答案 2 :(得分:2)

您可以使用运算符in来检查密钥是否存在,如下所示:

运算符in是避免对虚假值进行错误检查的最安全方法。

{"ccy" in e ? e.ccy : null}

答案 3 :(得分:0)

任何未在javascript对象中定义的键都将被视为未定义,因此您可以选择

(typeof obj.ccy === "undefined") ? null : obj.ccy;
(obj.ccy == undefined) ? null : obj.ccy;

如果您不熟悉三元表达式。您也可以这样写上面的内容。

if(obj.ccy == undefined){
   obj.ccy = null;
}

答案 4 :(得分:0)

有多种方法可以检查对象中是否存在给定键。

if(!obj[0].hasOwnProperty('cn')) {
    obj[o].cn = null
}

if(typeof obj[0].cn === 'undefined') {
    obj[0].cn = null;
}

if(obj[0].cn === undefined) {
    obj[0].cn = null;
}

后两种情况非常相似,typeof通常在您要检查变量是否已在代码中定义和可访问时使用。

现在的真实示例如下:

var missing = ['cn', 'ccy'];
for(var i = 0; i < obj.length; i++) {
    for(var j = 0; j < missing.length; j++) {
        if(!obj[i].hasOwnProperty(missing[j])) {
            obj[i][missing[j]] = null;
        }
    }
}

答案 5 :(得分:0)

x.Select(message => new bless { text = message.MessageText }).ToList()