簡體   English   中英

JavaScript數組鍵/值對使用鍵的文字變量名稱

[英]JavaScript Array of Key/Value Pairs Uses Literal Variable Name for Key

我正在嘗試使用push方法創建一個鍵/值對數組,但會得到意想不到的結果。

console.log打印這個:

書籍:[{“bookTitle”:“馬克吐溫”}]

雖然我希望如此:

書籍:[{“Tom Sawyer”:“馬克吐溫”}]

這是代碼:

var books = [];
var bookTitle = "Tom Sawyer";
var author = "Mark Twain";

books.push({bookTitle : author})

console.log("books: %s", JSON.stringify(books))

我試過books.bookTitle = authorbooks[bookTitle] = author ,但結果是一樣的。 任何幫助表示贊賞。

括號表示法是使用動態密鑰名稱的正確方法:

books[bookTitle] = author

但是,您需要使用中間對象:

var books = [];
var bookTitle = "Tom Sawyer";
var author = "Mark Twain";
var foo = {};
foo[bookTitle] = author;

books.push(foo);

console.log("books: %s", JSON.stringify(books))

在現代Javascript(ES2015 +)中,您可以使用計算屬性以輕微的方式修改示例代碼 - 方括號圍繞鍵名稱,表示應賦值之前計算:

var books = [];
var bookTitle = "Tom Sawyer";
var author = "Mark Twain";

books.push({[bookTitle] : author})

......正確地產生:

[{'Tom Sawyer':'馬克吐溫'}

這類似於Matt Ball的原始答案,但避免了使用臨時變量的冗長。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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