Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何将嵌套对象数组动态转换为单个数组_Angular_Typescript - Fatal编程技术网

Angular 如何将嵌套对象数组动态转换为单个数组

Angular 如何将嵌套对象数组动态转换为单个数组,angular,typescript,Angular,Typescript,//我有一个多重物体 _id: "5e5d00337c5e6a0444d00304" orderID: 10355 orderDate: "2020-03-02" user: _id: "5e2e9699a648c53154f41025" name: "xyz1" email: "abcde@gmail.com" mNumber: 12336 //我想把它放在一个数组中 orderID: 10354, 10355

//我有一个多重物体

_id: "5e5d00337c5e6a0444d00304"
    orderID: 10355
    orderDate: "2020-03-02"
    user:
       _id: "5e2e9699a648c53154f41025"
       name: "xyz1"
       email: "abcde@gmail.com"
       mNumber: 12336
//我想把它放在一个数组中

orderID: 10354, 10355
orderDate:"2020-03-02","2020-03-02"
name: "xyz", "xyz1"
email: "abcd@gmail.com", "abcde@gmail.com"
mNumber: 1234536, 12336
我的主要目标是获取excel表格,在这些标题下,我可以从中获取这些数据。 像


在角度上应该怎么做?

如果我理解正确,你可以这样做

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 ] ]
基本上,这只是一个迭代

我将添加另一个解决方案。在本例中,您不希望描述行中的所有值,而是希望描述行中不需要的值。在这种情况下,可以使用递归函数遍历对象<代码>字段是描述哪些值去哪些值不去的对象。像这样的

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
(与前面相同),您将得到比以前更精确的输出


您将看到,我也省略了我要放在行中的键,为此,我只是检查键是否在
字段中
对象中。

您能以更可读的方式发布吗?
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);