2017-07-24 116 views
1

我有这样的对象:分配对象属性值到一个数组或变量

{ 
    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。

+0

您正在使用的两个对象。在你做了你想做的事情之后,'errorVars'将成为对象,这会导致无用的复制,为什么你不使用第一个对象? – Oen44

+0

@ Oen44我想打印html标签中的属性。如果我有这个属性{名称:“我的名字”}可以在html中的span标签中打印“我的名字”? – GhostOrder

回答

2

从评论你上面的问题如何选择对象的值,你可以用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)

+0

这真是我想要的,谢谢哥们! – GhostOrder

0

这是可能的。有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]; 
}` 
+0

感谢您的回答@YCotov第一个选项返回undefined当我console.log,第二个需要我修改我的对象,我不想做,因为是一个对象形式JSON。 – GhostOrder

1

这里有一个对象转换为使用香草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);