web-dev-qa-db-fra.com

Convertir un tableau d'objets en tableau des valeurs des objets

J'essaie de convertir ce tableau

let orders = [
  {  amount: '100', user: 'admin', date: 'March 6, 2019' },
  {  amount: '120', user: 'admin', date: 'March 6, 2019' },
  {  amount: '80', user: 'admin', date: 'March 7, 2019' },
  {  amount: '200', user: 'admin', date: 'March 7, 2019' },
];

à quelque chose comme ça

orders = [
  ['100', 'admin', 'March 6, 2019'],
  ['120', 'admin', 'March 6, 2019'],
  ['80', 'admin', 'March 7, 2019'],
  ['200', 'admin', 'March 7, 2019'],
];

et j'ai lu que Objects.values() renvoie les valeurs dans un tableau, j'ai donc essayé de parcourir le tableau order en utilisant forEach() et en utilisant le Object.values sur chaque élément du tableau.

let newOrders = orders.forEach(order => {
  return Object.values(order);
});

Je ne sais pas si ce que je fais est bien et je suis nouveau sur Javascript. Aidez-moi, s'il vous plaît.

35
sunny_adriann

Comme l'ordre des valeurs dans le tableau retourné par Object.values() n'est pas garanti, vous devriez envisager d'utiliser .map() avec certains - Destruction d'objet . Vous pouvez ensuite extraire les propriétés des objets dans des variables distinctes et les renvoyer explicitement dans l'ordre souhaité.

const data = [
  { amount: '100', user: 'admin', date: 'March 6, 2019' },
  { amount: '120', user: 'admin', date: 'March 6, 2019' },
  { amount: '80',  user: 'admin', date: 'March 7, 2019' },
  { amount: '200', user: 'admin', date: 'March 7, 2019' }
];

const result = data.map(({ amount, user, date }) => [amount, user, date]);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
45
Mohammad Usman

L'ordre dans lequel les propriétés de l'objet sont énumérées n'est pas garanti ( ref ). La solution la plus simple consiste à spécifier explicitement les clés dans l'ordre souhaité:

let result = orders.map(order => [order.amount, order.user, order.date]);
22
Salman A

Utilisation de destructuring. Utilisez-le si l'ordre des propriétés (de l'objet) est requis dans la sortie

let orders = [
  {  amount: '100', user: 'admin', date: 'March 6, 2019' },
  {  amount: '120', user: 'admin', date: 'March 6, 2019' },
  {  amount: '80', user: 'admin', date: 'March 7, 2019' },
  {  amount: '200', user: 'admin', date: 'March 7, 2019' },
];

console.log(orders.map(({amount,user,date})=>[amount,user,date]))

Utilisez map et Object.values pour obtenir les valeurs des objets. Cela ne garantit pas que l'ordre dans la sortie sera le même que dans l'objet Référez-vous ceci

let orders = [
  {  amount: '100', user: 'admin', date: 'March 6, 2019' },
  {  amount: '120', user: 'admin', date: 'March 6, 2019' },
  {  amount: '80', user: 'admin', date: 'March 7, 2019' },
  {  amount: '200', user: 'admin', date: 'March 7, 2019' },
];
console.log(orders.map(e=>Object.values(e)))
20
ellipsis

Utilisez simplement orders.map(Object.values)

let orders = [
  {  amount: '100', user: 'admin', date: 'March 6, 2019' },
  {  amount: '120', user: 'admin', date: 'March 6, 2019' },
  {  amount: '80',  user: 'admin', date: 'March 7, 2019' },
  {  amount: '200', user: 'admin', date: 'March 7, 2019' },
];

const result = orders.map(Object.values);

console.log(result)
3
Khyati Sharma
let orders = [
  {  amount: '100', user: 'admin', date: 'March 6, 2019' },
  {  amount: '120', user: 'admin', date: 'March 6, 2019' },
  {  amount: '80',  user: 'admin', date: 'March 7, 2019' },
  {  amount: '200', user: 'admin', date: 'March 7, 2019' },
];

const result = orders.map(Object.values);

console.log(result)
1
Vipul

vous pouvez essayer ceci:

orders.map((order) => Object.values(order));

map vous renverra un nouveau tableau, tandis que forEach fera juste un rappel sur chaque élément du tableau

1

Une solution plus robuste, utile si vous avez de nombreuses instances où vous avez ces objets de type struct avec des ordres/clés différents. Une approche fonctionnelle, propsToArray prend une série de clés comme paramètres individuels et retourne une fonction qui effectue la transformation souhaitée sur les objets.

let orders = [
  {  amount: '100', user: 'admin', date: 'March 6, 2019' },
  {  amount: '120', user: 'admin', date: 'March 6, 2019' },
  {  amount: '80',  user: 'admin', date: 'March 7, 2019' },
  {  amount: '200', user: 'admin', date: 'March 7, 2019' },
];

// option 1
let propsToArray = function(...keys) {
    return function(obj) {
        return keys.map(key => obj[key]);
    }
};
// option 2
//  propsToArray = (...keys) => (obj) => keys.map(key => obj[key]);

// resulting function
let orderToArray = propsToArray("amount", "user", "date");

console.log(orders.map(orderToArray));
0
Conor O'Brien
let orders = [{
    amount: '100',
    user: 'admin',
    date: 'March 6, 2019'
  },
  {
    amount: '120',
    user: 'admin',
    date: 'March 6, 2019'
  },
  {
    amount: '80',
    user: 'admin',
    date: 'March 7, 2019'
  },
  {
    amount: '200',
    user: 'admin',
    date: 'March 7, 2019'
  },
];

let array = []; //initializing array
orders.forEach((element) => { //using array function for call back
  for (var j in element) { //looping through each element of array
    array.Push(element[j]); //pushing each value of object present inside the orders
  }
});
console.log(array); //array is ready
0
Vipul