首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析对象?

如何解析对象?
EN

Stack Overflow用户
提问于 2018-09-10 22:12:37
回答 4查看 126关注 0票数 1

如何循环遍历对象而不是数组?

代码语言:javascript
复制
$(function() {
  var alreadyFilled = false;
  var states = ['Alabama','Alaska','American Samoa','Arizona'];
  function initDialog() {
    clearDialog();
    for (var i = 0; i < states.length; i++) {
      $('.dialog').append('<div>' + states[i] + '</div>');
    }
  }
  initDialog();
});

下面是我需要循环遍历的对象,而不是上面的数组。

代码语言:javascript
复制
var states_2 = {
        'Germany': ['Duesseldorf', 'Leinfelden-Echterdingen', 'Eschborn'],
        'Spain': ['Barcelona'],
        'Hungary': ['Pecs'],
        'USA': ['Downers Grove'],
        'Mexico': ['Puebla'],
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-10 22:23:56

您可以为对象创建一个循环,然后循环来自该国家的每个数组,如下所示:

代码语言:javascript
复制
$(function() {
  var alreadyFilled = false;
  var states_2 = {
    'Germany': ['Duesseldorf', 'Leinfelden-Echterdingen', 'Eschborn'],
    'Spain': ['Barcelona'],
    'Hungary': ['Pecs'],
    'USA': ['Downers Grove'],
    'Mexico': ['Puebla'],
  }

  function initDialog() {
    //clearDialog();
    for (var key in states_2) {
      for (var i = 0; i < states_2[key].length; i++) {
        console.log(states_2[key][i])
        //$('.dialog').append('<div>' + states_2[key][i] + '</div>');
      }
    }

  }
  initDialog();
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

票数 0
EN

Stack Overflow用户

发布于 2018-09-10 22:14:30

最简单的调整将是首先将对象转换为数组,然后您可以使用与原来相同的代码:

代码语言:javascript
复制
var states_2 = {
  'Germany': ['Duesseldorf', 'Leinfelden-Echterdingen', 'Eschborn'],
  'Spain': ['Barcelona'],
  'Hungary': ['Pecs'],
  'USA': ['Downers Grove'],
  'Mexico': ['Puebla'],
};
var states = [].concat(...Object.values(states_2));
console.log(states);

还请注意,您可能首先创建一个完整的HTML状态,并且只创建append一次-这样,HTML只更改一次,而不是多次更改:

代码语言:javascript
复制
$('.dialog').append(
  states.map(state => '<div>' + state + '</div')
  .join('')
);

要在不首先更改为数组的情况下遍历对象本身,只需遍历对象的Object.values以获得内部数组:

代码语言:javascript
复制
var states_2 = {
  'Germany': ['Duesseldorf', 'Leinfelden-Echterdingen', 'Eschborn'],
  'Spain': ['Barcelona'],
  'Hungary': ['Pecs'],
  'USA': ['Downers Grove'],
  'Mexico': ['Puebla'],
};
Object.values(states_2).forEach((arr) => {
  arr.forEach((state) => console.log(state));
});

要获得国家名称,请使用Object.entries而不是Object.values立即获取键名和值:

代码语言:javascript
复制
Object.entries(states_2).forEach(([key, arr]) => {
票数 1
EN

Stack Overflow用户

发布于 2018-09-10 22:18:55

您可以使用嵌套循环。外部循环将通过Object.entries(states_2),内部循环将遍历每个国家的数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52266184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档