2017-07-24 114 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);