Как преобразовать объекты в массив? - PullRequest
0 голосов
/ 13 июля 2020

Я сохранил данные в локальном хранилище в массиве. Теперь я хочу удалить определенный элемент из этого массива, находящегося в локальном хранилище. Для этого сначала у меня есть

var items = JSON.parse(localStorage.getItem('shoppingCart'));
var resturantid = localStorage.getItem('resturant_id');
var filtered = [];
for (var q = 0; q < items.length; q++) {

  if (items[q].resturantid == resturantid) {
    filtered.push(items[q]);
  }
}
console.log(typeof filtered, filtered);

вывод OBJECT

в консоли

(2) [{…}, {…}]
0: {name: "veg-momo", price: 12, count: 8, resturant: "Test Developer", resturantid: 2, …}
1: {name: "afdafasdf", price: 123, count: 4, resturant: "Test Developer", resturantid: 2, …}
length: 2
__proto__: Array(0)

typeof дает мне объект, и из-за этого я не смог для использования функции map, как говорится, array.map не является функцией. Я хочу, чтобы это произошло просто для того, чтобы удалить определенный элемент из ключа локального хранилища, в котором установлен массив.

Ответы [ 3 ]

0 голосов
/ 13 июля 2020

Это неправильное использование map(); это возвращает новый массив с элементами для всех исходных элементов. Используйте filter(), чтобы вернуть только те элементы, которые удовлетворяют тесту.

var filtered = items.filter(item => item.restaurantid == restaurantid);

Ваш объект является массивом, поэтому для него должны работать все стандартные методы массива.

0 голосов
/ 13 июля 2020

Ваш объект выглядит примерно так: {0: {…}, 1: {…}} вам нужно создать массив значений, например [{...}, {... }] ! Для этого используйте Object.values ​​() , а затем примените map () или filter () или reduce () согласно вашему программа требует.

let obj = Object.assign({},[{name: "veg-momo", price: 12, count: 8, resturant: "Test Developer", resturantid: 2}, {name: "afdafasdf", price: 123, count: 4, resturant: "Test Developer", resturantid: 2}]);

// obj.map(x => {console.log(x)}); //error: Uncaught TypeError: obj.map is not a function

Object.values(obj).map(x => console.log(x)); // Works!
0 голосов
/ 13 июля 2020

Проблема в том, что вам нужно использовать отфильтрованные [0] .name и т. Д. Потому что в HTML нет объекта, поэтому вы должны использовать это

Но если вы хотите отобразить в HTML, вы можно использовать filter [0] .toString () и распечатать его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...