【问题标题】:Assigning object properties values to an array or variables将对象属性值分配给数组或变量
【发布时间】:2017-07-24 23:27:11
【问题描述】:

我有这个对象:

{
  nameErr: "Name is required"
  numberErr: "Number is required"
  emailErr: "Email is required"
  genderErr: "Gender is required"
  messageErr: "Message is required"
}

还有这个数组:

var errorVars = [errorName, errorNumber, errorEmail, errorGender, errorMessage]

如何将属性nameErr 的值分配给errorVars 变量,并对数组中的其余变量执行相同操作,可以吗?

类似:

for(i=0; i<errorVars.length; i++){
  errorVars[i] = "property value[i]"
}

PS:使用纯 JavaScript。

【问题讨论】:

  • 您正在使用两个对象。 errorVars 在你做你想做的事情之后将成为对象,这导致无用的复制,你为什么不使用第一个对象?。
  • @Oen44 我想打印 html 标签中的属性。如果我有这个属性 {name:"my name"} 是否可以在 html 的 span 标签中打印“my name”?

标签: javascript arrays object for-loop


【解决方案1】:

从上面的评论中您的问题是如何选择对象值,您可以使用obj.keyName 选择它,或者如果它是动态键使用Object.keys(obj)

var obj = {
  nameErr: "Name is required",
  numberErr: "Number is required",
  emailErr: "Email is required",
  genderErr: "Gender is required",
  messageErr: "Message is required"
};
var errorVars = []
// select by key
console.log(obj.nameErr + "\n\n")

// for dynamic key
for(i = 0; i < Object.keys(obj).length; i++) {
  objValue = obj[Object.keys(obj)[i]];
  console.log(objValue)
  // convert to array
  errorVars.push(objValue)
}
console.log(errorVars)

【讨论】:

  • 这正是我想要的,谢谢哥们!
【解决方案2】:

这是一种使用 vanilla JS 将对象转换为数组的方法:

var ob = {
    nameErr: "Name is required",
    numberErr: "Number is required",
    emailErr: "Email is required",
    genderErr: "Gender is required",
    messageErr: "Message is required"
 }

var errorVars = [];

for(var i = 0 ; i < Object.keys(ob).length; i++) {
    var x = Object.keys(ob)[i]
    errorVars.push(x + " : " + ob[x]
};

console.log(errorVars);

【讨论】:

    【解决方案3】:

    这是可能的。有 2 个选项: 1)你可以按照相同的顺序制作,所以

    `var obj ={
    nameErr: "Name is required"
    //...
    }
    for(i=0; i<errorVars.length; i++){
      errorVars[i] = obj[i];
    }`
    

    2) 你需要将你的errorVars 结构稍微修改为

    `var errorName ={
          name:"nameErr", value:""
    };
    var errorVars = [errorName];
    for(i in errorVars) {
       errorVars[i].value = obj[errorVars[i].name];
    }`
    

    【讨论】:

    • 感谢@YCotov 的回答第一个选项在我console.log 时返回未定义,第二个选项要求我修改我的对象,我更喜欢不这样做,因为它是Json 形式的对象。跨度>
    猜你喜欢
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2016-09-18
    • 2019-08-09
    • 2014-04-05
    • 2011-09-22
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多