是否添加选项以在javascript中使用对象的键和值进行选择?

时间:2019-02-05 10:24:07

标签: javascript loops object

我需要在javascript中迭代以下对象以便填充选择选项:

{"options":{"116":{"pt":"116","en":"116"},"118":{"pt":"118","en":"118"}}}

我的实际代码是这样:

for (var key in data) {
   if (data.hasOwnProperty(key)) {
      var opt = document.createElement('option');
      opt.innerHTML = data[key];
      opt.value = data[key];
      sel.appendChild(opt);
   }
}

上面的循环为我提供了数组中的所有元素。 但是我要做的只是选择'pt'键的值。 我的循环必须从“ pt”键仅返回116和118。

2 个答案:

答案 0 :(得分:3)

您可以使用Object.valuesforEach做这样的事情:

const data = {"options":{"116":{"pt":"116","en":"116"},"118":{"pt":"118","en":"118"}}}

const sel = document.getElementById('select');

const ptValues = Object.values(data.options)
                        .forEach(v => {
                            var opt = document.createElement('option');
                            opt.innerHTML = opt.value = v.pt
                            sel.appendChild(opt);
                          })
<select id="select"></select>

答案 1 :(得分:3)

您只需要执行data[key].pt

var obj = {
  "options": {
    "116": {
      "pt": "116",
      "en": "116"
    },
    "118": {
      "pt": "118",
      "en": "118"
    }
  }
};
var data = obj.options;
var sel = document.getElementById('select');
for (var key in data) {
  if (data.hasOwnProperty(key)) {
    var opt = document.createElement('option');
    opt.innerHTML = data[key].pt;
    opt.value = data[key].pt;
    sel.appendChild(opt);
  }
}
<select id="select"></select>