javascript - 数组元素是未定义的 Javascript
问题描述
即使 bindInfo 中有数据,Bind 中的数组元素也是未定义的。有什么建议么。
let bindinfo =
{
clientid: 1,
clientname: 'Web Client',
nowutc: now_utc,
bindlist: Bindings(this.props.bindDetails)
}
Bindings(bin)
{
var Bind = [];
Bind = bin.map(bindItem => {
var bindInfo;
bindInfo = {
bindingid: bindItem.bindId,
function: bindItem.functionName,
aggregation: bindItem.aggregation,
datalimit: bindItem.datalimit
}
Bind.push(bindInfo);
});
return Bind;
}
解决方案
.map
操作完成后,赋值bind
给结果.map
——即每次迭代返回的元素.map
就是新的数组elemenet。但是你永远不会从 mapper 函数返回任何东西,所以即使你最初push
是Bind
,你以后的重新分配Bind
也会重置它。
正确使用.map
并在每次迭代中返回项目:
const Bind = bin.map(bindItem => {
return {
bindingid: bindItem.bindId,
function: bindItem.functionName,
aggregation: bindItem.aggregation,
datalimit: bindItem.datalimit
};
});
或者(不推荐)使用forEach
而不是.map
,并且不要重新分配Bind
:
const Bind = [];
bin.forEach(bindItem => {
var bindInfo = {
bindingid: bindItem.bindId,
function: bindItem.functionName,
aggregation: bindItem.aggregation,
datalimit: bindItem.datalimit
}
Bind.push(bindInfo);
});
.map
当您想通过调用的结果.map
将一个数组转换为另一个数组时使用。否则,对于通用循环,请使用forEach
.
推荐阅读
- javascript - 如何阻止 VueJS S3 Deploy 重新上传静态文件?
- sql - SELECT \ FROM AnyTableName
- sql-server - Counting lack of a condition when joining tables
- c++ - 错误:未在此范围内声明“imread”
- c# - 我无法获得标签标签
- database - How to store trip itinerary data into DynamoDB?
- opengl - 几何着色器可以访问 OpenGL 剔除和正面设置吗?
- python - using boto3 to get file list and download files
- c# - 无法将字符串隐式转换为 Microsoft.Bot.Schema.Activity
- python - Pygame 使用教程中编写的相同代码在 mac 上崩溃,但在 windows 命令上编写