javascript - 使用 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 消息的原因吗?我究竟做错了什么?
解决方案
您缺少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
推荐阅读
- apache-kafka - 为什么重新创建具有相同 groupId 的消费者组后偏移量不重置为 0
- html - 如何为 HTML/CSS 使用“带有 BEM 的原子设计”方法?
- java - Drools 7 是否必须在单独的 JVM 中运行,即持有规则的 KIE 服务器?
- css - 实现 Bootstrap 5 多级下拉垂直导航栏的干净方法是什么?
- html - HTML5 中的表单“action”属性究竟是如何将数据发送到实时网站的后端的?
- go - 更新 opentelemetry prometheus 导出器中的标签
- mysql - 由于访问限制,LOAD DATA LOCAL INFILE 文件请求被拒绝
- rust - Rust:有没有办法使用 map 来缩短这个 if/else 代码?
- python - Think Python(如何像计算机科学家一样思考)——练习 8.4 Duckling 问题
- winapi - win32 listview内部构建滚动条所有者绘制