簡體   English   中英

從Javascript中的兩個嵌套數組獲取對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM