I'm trying to create an array of key/value pairs by using the push
method, but getting unexpected results.
console.log
prints this:
books: [{"bookTitle":"Mark Twain"}]
Whereas I would expect this:
books: [{"Tom Sawyer" : "Mark Twain"}]
Here's the code:
var books = [];
var bookTitle = "Tom Sawyer";
var author = "Mark Twain";
books.push({bookTitle : author})
console.log("books: %s", JSON.stringify(books))
I've tried books.bookTitle = author
and books[bookTitle] = author
, but the result is the same. Any help is appreciated.
Arrays in javascript are typically used only with numeric, auto incremented keys, but javascript objects can hold named key value pairs, functions and even other objects as well.
Use Variable as Key for Objects in JavaScript log(obj. key); console. log(obj["key"]); The variable varr was set as the key for the object obj .
A property is a “key: value” pair, where key is a string (also called a “property name”), and value can be anything. We can imagine an object as a cabinet with signed files. Every piece of data is stored in its file by the key.
The array. keys() method is used to return a new array iterator which contains the keys for each index in the given input array. Parameters: This method does not accept any parameters. Return Values: It returns a new array iterator.
Bracket notation is the correct way to use a dynamic key name:
books[bookTitle] = author
However, you need to use an intermediate object:
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))
In modern Javascript (ES2015+), you can use computed properties which modifies your example code in one slight way-- square brackets are wrapped around the key name to signify it should be computed before assignment:
var books = [];
var bookTitle = "Tom Sawyer";
var author = "Mark Twain";
books.push({[bookTitle] : author})
... which correctly yields:
[ { 'Tom Sawyer': 'Mark Twain' }
This is similar to Matt Ball's original answer, but avoids the verbosity of using temporary variables.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With