Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Javascript 应用程序脚本:映射未将预期值返回到数组_Javascript_Arrays_Google Apps Script - Fatal编程技术网

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

Javascript 应用程序脚本:映射未将预期值返回到数组,javascript,arrays,google-apps-script,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",

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

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",
  },
  ....
];
我试图把一系列的索引组合在一起(“#”)

到目前为止,我已经:

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
输出:

[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
这产生了:

[20-06-13 20:43:33:462 EDT] null

我做错了什么?

< P>我认为你在中间的回归是问题所在。除此之外,一切正常

这对我很有用:

function functest() {
  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"},
                 {" #":"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"},
                 {" #":"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"},
                 {" #":"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"}];
  var oA=[];
  let indexes=objArray.forEach(function(rowObj) {
    Object.keys(rowObj).map(function(key) {
      if (key.includes('#') ) {
        var v = rowObj[key];
        oA.push(v);
      }
    });
  });
  Logger.log(oA);
}//[4596, 4588, 4596, 4588, 4596, 4588, 4596, 4588]

作为补充答复:

你可以做得更简单更快

const值=[
{“#”:“4596”,“E”:“是”},
{“#”:“4597”,“E”:“否”},
{“#”:“4598”,“E”:“也许”},
]
const index=values.map({“#“:id})=>id);

控制台日志(索引)如果您要查找的密钥始终是
#
,并且如果它存在于所有对象中,则可以使用简化逻辑。请看下面的例子

const objArray=[
{
" #": "4596",
“E”:“是”,
“日期”:“20年12月6日”,
“县”:“洛杉矶县”,
“州”:“加利福尼亚州”,
“英亩”:“2.49”,
“渴望”:“低”,
},
{
" #": "4588",
“E”:“是”,
“日期”:“06/11/20”,
“县”:“乡镇县”,
“州”:“格鲁吉亚”,
“英亩”:“3.00”,
“渴望”:“高”,
},
];
常量输出=objArray.reduce(
(previousValue,currentValue)=>[…previousValue,currentValue[“#”],
[]
);

console.log(output)
我发现使用它查看结果要快得多:
SpreadsheetApp.getUi().showModalDialog(HtmlService.createHtmlOutput(oA.join(“
”),“Display results”)
这是个好主意,但当我在应用程序脚本中运行它时,我得到:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],在实际代码中,
#
是否以空格作为前缀?你能展示一下你是如何实施这个建议的吗?你必须确保以下几点是正确的:1
map
直接在对象数组上调用(
objArray
)。2.
“#”
键完全由空格和哈希字符组成。3.V8运行时已启用(Mario的答案也是如此,顺便说一句)谢谢-我对js和reduce相当陌生。你能解释一下你在这里做了什么吗?很抱歉,这是一个很好的解释。我很熟悉,以前也使用过reduce,但在您的解释中,它只是一个开始。我不太清楚您使用的函数-(previousValue,currentValue)=>[…previousValue,currentValue[“#”]]-previousValue是累加器吗?我理解。是,前一个值是累加器。关于
[…previousValue,currentValue[“#”]
我正在使用扩展语法来扩展新数组中的当前累加器加上属性`#`@LDN中的currentValue的值-
[…sourceArray,value]
只是自ES6出现以来对
sourceArray.concat([value])
的一种更简洁的方法(请参阅)