[英]Get an object from two nested array in Javascript
我想從兩個數組中獲得一個對象,並按以下方式進行操作。
for (var j = 0; j < rawDataRows.length; j++) {
for (var i = 0; i < categories.length; i++) {
var category = categories[i];
var rowValue = rawDataRows[j];
// here I do got the right value for category
console.log(category);
console.log(rowValue);
// but the following line doesn't interpret category as a variable
formattedDataRows.push({category: rowValue});
}
}
我以為我可以得到類似的東西:
[{"category1": "value1"},{"category2": "value2"}, {"category3": "value3"}]
但是,事實證明我得到了:
[{"category": "value1"}, {"category": "value2"}, {"category": "value3"}]
誰能指出我做錯了什么? 另外,如果您有更好的方法實現目標,請發表評論。 Javascript僅沒有jQuery或其他框架。 謝謝!
對象文字語法在ECMAScript 5和更低版本中,不允許您將變量標識符指定為屬性名稱。 而是先創建對象,然后使用括號符號。
var o = {};
o[category] = rowValue;
formattedDataRows.push(o);
使用ECMAScript 6,您可以執行以下操作:
formattedDataRows.push({[category]: rowValue});
盡管目前對這種語法的支持是有限的。
您可以使用categories[i].toString();
獲得您想要的字符串:
var categories = ["category1", "category2", "category3"]; var rawDataRows = ["value1", "value2", "value3"]; var formattedDataRows = []; for (var j = 0; j < rawDataRows.length; j++) { for (var i = 0; i < categories.length; i++) { var category = categories[i].toString(); var rowValue = rawDataRows[j].toString(); var tmpObj = {} tmpObj[category] = rowValue formattedDataRows.push(tmpObj); //formattedDataRows.push({[category]: rowValue}); } } document.write(JSON.stringify(formattedDataRows))
如果您希望兩個值一起增加(看起來如此),並且還假設類別的長度與rawdataRows的長度相同,那么我認為您確實想要一個循環而不是兩個循環:
for (var i = 0; i < categories.length; i++) {
var category = categories[i];
var rowValue = rawDataRows[i];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.