使用es6迭代多维对象

时间:2018-04-29 10:59:06

标签: javascript ecmascript-6

是否有任何关于如何在对象键之间进行迭代的方法

var dataSubmit = {
email : {
  value : email,
  rules : 'required email'
},
password : {
  value : password,
  rules : 'required,min:6'
}

};

我希望我可以像

那样访问它
each (data in dataSubmit) {
 console.log(data.value);
 console.log(data.rules);
}

并获取

 email: {value : email, rules : 'required, email'};

所以我可以

iterator {
  func(email: {value : email, rules : 'required, email'})
}

我需要保持整个对象

3 个答案:

答案 0 :(得分:3)

for(const data of Object.values(dataSubmit)) 
  console.log(data.value, data.rules);

只需在对象值上使用for..of

答案 1 :(得分:2)

你几乎就在那里,使用for...in语句 - 将each替换为for

var dataSubmit = {
  email : {
    value : 'email',
    rules : 'required email'
  },
  password : {
    value : 'password',
    rules : 'required,min:6'
  }
};

for (let key in dataSubmit) {
  console.log(dataSubmit[key]);
}

或者使用带有Object.values(dataSubmit)的{​​{3}}语句,该语句返回值数组

var dataSubmit = {
  email : {
    value : 'email',
    rules : 'required email'
  },
  password : {
    value : 'password',
    rules : 'required,min:6'
  }
};

for (let data of Object.values(dataSubmit)) {
  console.log(data);
}

答案 2 :(得分:1)

您可以在forEach上使用Object.values循环。

var dataSubmit = {email: {value: "email",rules: 'required email'},password: {value: "password",rules: 'required,min:6'}};

Object.values(dataSubmit).forEach(o => {
  console.log(o.value);
  console.log(o.rules)
})