JavaScript: добавление или вставка значений в объект с новым индексом - PullRequest
0 голосов
/ 11 октября 2019

Я работал с JS Objects. Я хочу выдвинуть некоторые значения с определенным индексом (id), чтобы я мог получить доступ к этим значениям после добавления / проталкивания их в объекте JS.

Предположим, это объект, который я создал в JavaScript

var my_books = {
    1 : {
        'name' : 'Book_1',
        'price' : '100'
    },
    2 : {
        'name' : 'Book_2',
        'price' : '200'
    }
};

Теперь я хочу добавить ниже данные в созданный выше объект

3 : {
    'name' : 'Book_3',
    'price' : '300'
}

После добавленияЯ хочу получить к нему доступ с помощью строки ниже.

console.log(JSON.stringify(my_books[3]['name']));

Но я не знаю, как добавить такие данные в объекты JavaScript. Я много искал, но никакой код не помог мне в этом.

Пожалуйста, помогите.

Ответы [ 2 ]

4 голосов
/ 11 октября 2019

Вы можете сделать

my_books[3] = {
    'name' : 'Book_3',
    'price' : '300'
}

Но если вы хотите, чтобы индекс создавался автоматически, тогда objects - неправильная структура данных для ваших требований. Вы можете использовать Arrays вместо этого.

Пример:

my_books = [];

function newBook (name, price) {
  const newBookObject = {name, price};
  my_books.push(newBookObject);
}

newBook('book1', 100);
newBook('book2', 500);
newBook('book3', 600);

console.log(my_books);

// To iterate over it -
for (var index in my_books) {
  console.log(index, my_books[index]);
}

0 голосов
/ 11 октября 2019

В этом случае вы можете создать пользовательскую функцию push. Он может принять новый объект для добавления.

Найти последний вставленный индекс и увеличить ключ.

function push(obj){
  max  = Object.keys(my_books).reduce((acc, val) => acc > Number(val) ? acc: Number(val) , 0);
  my_books[max + 1] = obj;
  return my_books;
}

var my_books = {
    1 : {
        'name' : 'Book_1',
        'price' : '100'
    },
    2 : {
        'name' : 'Book_2',
        'price' : '200'
    }
};



function push(obj){
  max  = Object.keys(my_books).reduce((acc, val) => acc > Number(val) ? acc: Number(val) , 0);
  my_books[max + 1] = obj;
  return my_books;
}


console.log(push({
    name: "Book_3",
    price: "300"
  }));

  console.log(push({
    name: "Book_4",
    price: "400"
  }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...