我正在尝试使用该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))
Run Code Online (Sandbox Code Playgroud)
我试过books.bookTitle = author和books[bookTitle] = author,但结果是一样的.任何帮助表示赞赏.
Mat*_*all 30
括号表示法是使用动态密钥名称的正确方法:
books[bookTitle] = author
Run Code Online (Sandbox Code Playgroud)
但是,您需要使用中间对象:
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))
Run Code Online (Sandbox Code Playgroud)
Lee*_*son 11
在现代的Javascript(ES2015 +),则可以使用计算性能它修改你的示例代码中的一个微小的方式-方括号围绕键名包,以表示它应计算之前分配:
var books = [];
var bookTitle = "Tom Sawyer";
var author = "Mark Twain";
books.push({[bookTitle] : author})
Run Code Online (Sandbox Code Playgroud)
......正确地产生:
[{'Tom Sawyer':'马克吐温'}
这类似于Matt Ball的原始答案,但避免了使用临时变量的冗长.
| 归档时间: |
|
| 查看次数: |
32068 次 |
| 最近记录: |