проверить, существует ли ключ в объектном JavaScript - PullRequest
3 голосов
/ 02 июля 2019

У меня есть объект, в котором, если ключ не существует, установить в ноль, используя javascript.

Если ключ не существует в объекте obj, как ccy не существует cn MY и CA, как назначить и установить значение NULL с помощью JavaScript.

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 ]

4 голосов
/ 02 июля 2019

Самое простое, если вы можете быть уверены, что e.ccy не будет ложным (false, undefined, null, 0, "" или NaN) должен использовать логический оператор ИЛИ ||:

${e.ccy || null}
3 голосов
/ 02 июля 2019

Если вы не хотите записывать резервные значения по умолчанию в шаблон и хотите поддерживать чистоту шаблона, вы также можете предварительно обработать данные и установить пропущенные значения перед рендерингом:

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 голосов
/ 02 июля 2019

Вы можете использовать оператор in, чтобы проверить, существует ли ключ, следующим образом:

Оператор in является наиболее безопасным способом избежать неправильных проверок ложных значений.

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

0 голосов
/ 02 июля 2019
var q = [...Object.keys(obj[0]),...Object.keys(obj[1]),...Object.keys(obj[2])]
for(let i=0;i<obj.length;i++){
 for(let k=0;k<q.length;k++){
   if(!(q[k] in obj[i])){
    obj[i][q[k]] = null
  }
 }
}
console.log(obj)
0 голосов
/ 02 июля 2019

Существует несколько способов проверить, существует ли данный ключ в объекте.

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;
        }
    }
}
0 голосов
/ 02 июля 2019

Любой ключ, не определенный в объекте javascript, будет считаться неопределенным, поэтому вы можете проверить

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

Если вы не знакомы с троичными выражениями.Вы также можете написать выше, как это.

if(obj.ccy == undefined){
   obj.ccy = null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...