[英]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 = author
和books[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.