使用Javascript读取数组

时间:2018-12-06 18:35:25

标签: javascript arrays json

我正在将一些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]值

为什么我从中得到两个值?我以为可以说result [0]只会使我成为阵列的“一排”。在我看来,好像是results [0] results [1]中的'EmployeeRef'和'name'值。

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

1 个答案:

答案 0 :(得分:0)

您在对象数组中缺少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对象或EmployeeRef对象不存在,则会向数组中添加CustomerRef个值,但抛出错误的可能性较小。