Javascript - Преобразование объекта в массив с object.values - PullRequest
0 голосов
/ 05 августа 2020

Я возвращаю объект, содержащий массив данных, к которым я пытаюсь получить доступ. В ответ я использовал метод object.values для преобразования этого недопустимого объекта в 2D-массив. Отсюда я могу ввести l oop и применить свой javascript к возвращаемым данным. Моя проблема в том, что Object.values несовместимо с устаревшими браузерами, которые я пытаюсь приспособить. Есть ли альтернатива, которую я могу использовать, кроме object.values, для преобразования удаления исходного объекта?

Например:

const data = {[ ["Online Stores", 2, 3453], ["Retail Stores", 1 , 46643] ]}

const newData = Object.values(data)

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

У вашего объекта есть синтаксическая ошибка, но, учитывая, что у него есть объекты с ключами, вы можете использовать for in l oop здесь используйте flat() для сглаживания массива на один уровень, вот пример

const data = {
  0: [
    ["Online Stores", 2, 3453],
    ["Retail Stores", 1, 46643],
  ],
};

newData = [];
for (let key in data) {
  newData.push(data[key]);
}
console.log(newData.flat());
0 голосов
/ 05 августа 2020

Вы можете использовать for...in с проверкой hasOwnProperty.

delete Object.values;//for testing purposes
Object.values = Object.values || function(obj){
  console.log("Fallback implementation");
  var arr = [];
  for(var key in obj){
    if(obj.hasOwnProperty(key)) arr.push(obj[key]);
  }
  return arr;
}
var obj = {a: 1, b: '2', c: {d: 4}};
console.log(Object.values(obj));
...