Если я вас правильно понимаю, вы можете сделать что-то вроде этого,
objs = [
{
_id: "5e5d00337c5e6a0444d00304",
orderID: 10354,
orderDate: "2020-03-02",
user:
{
_id: "5e2e9699a648c53154f41025",
name: "xyz",
email: "abcd@gmail.com",
mNumber: 1234536
}
},
{
_id: "5e5d00337c5e6a0444d00304",
orderID: 10355,
orderDate: "2020-03-02",
user:
{
_id: "5e2e9699a648c53154f41025",
name: "xyz1",
email: "abcde@gmail.com",
mNumber: 12336
}
}
];
const arr = [];
for (const o of objs) {
arr.push([
o.orderID,
o.orderDate,
o.user.name,
o.user.email,
o.user.mNumber
]);
}
console.log(arr);
Это вывод,
[ [ 10354, '2020-03-02', 'xyz', 'abcd@gmail.com', 1234536 ],
[ 10355, '2020-03-02', 'xyz1', 'abcde@gmail.com', 12336 ] ]
По сути, это просто итерация.
Я собираюсь добавить другое решение. В этом случае вы не хотите описывать все значения, которые идут в строке, но вместо этого вы хотите описать значения, которые вы не хотите в строке. Вы можете использовать рекурсивную функцию для обхода объектов в этой ситуации. fields
- это объект, в котором вы описываете, какие значения идут, а какие нет. Примерно так.
const fields = { _id: false, user: { _id: false} }
function toRowRec(obj, fields) {
let row = [];
const keys = Object.keys(obj);
for (const k of keys) {
if (!fields.hasOwnProperty(k)) {
row.push(obj[k]);
} else if (typeof obj[k] === 'object' && obj[k] !== null) {
row = row.concat(toRowRec(obj[k], fields[k]));
}
}
return row;
}
let arr = []
for (const o of objs) {
arr.push(toRowRec(o, fields));
}
console.log(arr);
Я опускаю ввод objs
(такой же, как и предыдущий), и вы получите точный вывод, чем раньше.
Вы увидите, что я тоже опускаю ключи, которые я хочу поместить в строку, для этого я просто проверяю, находится ли ключ в объекте fields
.