应用程序脚本:映射未将预期值返回到数组

use*_*629 2 javascript arrays google-apps-script

我有一个对象数组,看起来像:

var objArray = [
  {
    " #": "4596",
    " E": "Yes",
    " Date": "06/12/20",
    " County": "Los Angeles County",
    " State": "California",
    " Acres": "2.49",
    " Eager": "Low",
  },
  {
    " #": "4588",
    " E": "Yes",
    " Date": "06/11/20",
    " County": "Towns County",
    " State": "Georgia",
    " Acres": "3.00",
    " Eager": "High",
  },
  ....
];
Run Code Online (Sandbox Code Playgroud)

我正在尝试将一组索引('#')放在一起;

到目前为止,我有:

let indexes = objArray.forEach(function (rowObj) {
  Object.keys(rowObj).map(function (key) {
    if (key.includes("#")) {
      var v = rowObj[key];
      Logger.log(v); // abc
      return v;
    }
  });
});

Logger.log(indexes); // abc
Run Code Online (Sandbox Code Playgroud)

输出:

[20-06-13 20:43:33:320 EDT] 4547
[20-06-13 20:43:33:324 EDT] 4546
[20-06-13 20:43:33:329 EDT] 4545
[20-06-13 20:43:33:450 EDT] 4543
[20-06-13 20:43:33:453 EDT] 4542
[20-06-13 20:43:33:456 EDT] 4540
[20-06-13 20:43:33:459 EDT] 4538
Run Code Online (Sandbox Code Playgroud)

这是产生:

[20-06-13 20:43:33:462 EDT] null
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Ole*_*ter 6

作为补充答案:

您可以更简单、更快地完成此操作。

const values = [
  { " #": "4596", " E": "Yes"},
  { " #": "4597", " E": "No"},
  { " #": "4598", " E": "Maybe"},
]

const indices = values.map(({ " #" : id }) => id);

console.log(indices);
Run Code Online (Sandbox Code Playgroud)

请注意,map()方法的回调应该是确定性的,以获得一致的结果。

实际问题

检查forEach()方法的文档- 它旨在产生副作用,因此返回void(字面上没有价值),因此是最后一个Logger.log(indexes);问题。

有用的链接

  1. map()方法参考
  2. 箭头函数指南
  3. forEach()方法参考