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.
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; }
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]);
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)))
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)
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)
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
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));
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