首页 > 解决方案 > 使用 Javascript 从数组中读取

问题描述

我正在将一些 JSON 数据从 API 源提取​​到 Google 表格中,并准备将其推送到数组中。我曾经JSON.parse将数据放入以下格式:

[{EmployeeRef={name=value, value=value}, NameOf=value, Hours=value, TxnDate=value, HourlyRate=value, Minutes=value, PayrollItemRef=value, SyncToken=value, BillableStatus=value, sparse=value, MetaData={CreateTime=value, LastUpdatedTime=value}, domain=value, ItemRef={name=value, value=value}, ID=value, CustomerRef={name=value, value=value}, Taxable=value}, etc.]

但是,当我尝试将其推入空数组时,出现错误。这是我用来将其推入数组的方法:

results.forEach(function(elem,z) {
    output.push([elem["TxnDate"],elem["EmployeeRef"]['name'],elem["CustomerRef"]['name'],elem["ItemRef"]['name'],elem["BillableStatus"],elem["HourlyRate"],elem["Hours"],elem["Minutes"],elem["Description"]]);
  });

我得到的错误是

“TypeError:无法从未定义中读取属性“名称”。(第 62 行,文件“代码”)”。

所以我想我会插入并检查数组中的一组值。但是当我运行以下代码时:

Logger.log(results[0]['EmployeeRef']['name']);

我得到:

[18-12-06 13:27:41:465 EST] 值

[18-12-06 13:27:41:878 EST] 值

为什么我从中得到两个值?我认为 results[0] 只会让我得到数组的一个“行”,可以这么说。在我看来,这似乎是来自 results[0]results[1] 的 'EmployeeRef' 和 'name' 值。

这就是我收到 TypeError 消息的原因吗?我究竟做错了什么?

标签: javascriptarraysjson

解决方案


您缺少CustomerRef对象数组中的对象,这就是为什么在尝试添加到数组elem["CustomerRef"]['name']时会出现该错误的原因。

(与存在的无关EmployeeRef

null您可能应该在访问name数组内的内部对象的参数之前添加某种检查。
与此类似的东西:

results.forEach(function(elem, z) {
    output.push(
        [elem["TxnDate"],
         elem["EmployeeRef"] ? elem["EmployeeRef"]["name"] : null,
         elem["CustomerRef"] ? elem["CustomerRef"]["name"] : null,
         elem["ItemRef"] ? elem["ItemRef"]["name"] : null,
         elem["BillableStatus"],
         elem["HourlyRate"],
         elem["Hours"],
         elem["Minutes"],
         elem["Description"]
    ]);
});

注意:如果对象或对象不存在,这将向null您的数组添加值,但不太可能引发错误。EmployeeRefCustomerRef


推荐阅读