.map() 不要不是打字稿中的函数
.map() don't is not a function in typescript
对象,javascript 中的 {}
没有方法 .map()
,它仅可用数据类型为 Array
[]
所以我虽然下面的数据格式是正确的,但为什么我不能使用 .map()
.
我想查询数组数据并使用 .map()
函数获取它的值如下
我收到错误消息:.map() 不是打字稿中的函数
const startDate = [];
const endDate = [];
let query;
query = this.createQueryBuilder("LeaveRequest")
.where("LeaveRequest.employeeId = :employeeId", { employeeId })
.getMany();
query.leaveRequest.map(function (leaveRequest) {
leaveRequest.map(function (values) {
startDate.push(values.startDate);
endDate.push(values.endDate);
});
});
return {startDate, endDate};
数据格式
当我执行 return query;
时,我得到以下格式;
[
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
}
]
你可以看到图片
你不需要内部地图,只需要这样,
query.map(leaveRequest => {
startDate.push(leaveRequest.createdAt);
endDate.push(leaveRequest.updatedAt);
});
DEMO
let query = [
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
}
];
let startDate = [];
let endDate = [];
query.map(leaveRequest => {
startDate.push(leaveRequest.createdAt);
endDate.push(leaveRequest.updatedAt);
});
console.log(startDate);
定义query
的类型并初始化它,所以即使getMany
return的空初始化值也不允许.map()
不是函数错误
let query: Array<any> = new Array<any>(size);
如果您已经为数组的 return 结果定义了 class 类型,那么 使用 any
类型是不可取的,然后使用该 class 类型并具有大小对于数组(它是可选的)
如果您没有 return 任何东西,请使用 forEach
而不是 map
。
forEach()
方法实际上没有 return 任何东西(未定义)。它只是对数组中的每个元素调用提供的函数。
map()
方法将对数组中的每个元素调用提供的函数。不同之处在于 map()
使用 return 值,实际上 return 是一个相同大小的新数组。
let query = [
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
}
];
let startDate = [];
let endDate = [];
query.forEach(leaveRequest => {
startDate.push(leaveRequest.createdAt);
endDate.push(leaveRequest.updatedAt);
});
console.log(startDate);
console.log(endDate);
您上面的所有答案几乎都是正确的,但您可能会忘记 async
和 await
因为当我应用这些时,它的所有属性也都有效。
async functionName() {
const startDate = [];
const endDate = [];
let query;
query = await this.createQueryBuilder("LeaveRequest")
.where("LeaveRequest.employeeId = :employeeId", { employeeId })
.getMany();
query.leaveRequest.map(function (leaveRequest) {
leaveRequest.map(function (values) {
startDate.push(values.startDate);
endDate.push(values.endDate);
});
});
return {startDate, endDate};
}
对象,javascript 中的 {}
没有方法 .map()
,它仅可用数据类型为 Array
[]
所以我虽然下面的数据格式是正确的,但为什么我不能使用 .map()
.
我想查询数组数据并使用 .map()
函数获取它的值如下
我收到错误消息:.map() 不是打字稿中的函数
const startDate = [];
const endDate = [];
let query;
query = this.createQueryBuilder("LeaveRequest")
.where("LeaveRequest.employeeId = :employeeId", { employeeId })
.getMany();
query.leaveRequest.map(function (leaveRequest) {
leaveRequest.map(function (values) {
startDate.push(values.startDate);
endDate.push(values.endDate);
});
});
return {startDate, endDate};
数据格式
当我执行 return query;
时,我得到以下格式;
[
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
}
]
你可以看到图片
你不需要内部地图,只需要这样,
query.map(leaveRequest => {
startDate.push(leaveRequest.createdAt);
endDate.push(leaveRequest.updatedAt);
});
DEMO
let query = [
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
}
];
let startDate = [];
let endDate = [];
query.map(leaveRequest => {
startDate.push(leaveRequest.createdAt);
endDate.push(leaveRequest.updatedAt);
});
console.log(startDate);
定义query
的类型并初始化它,所以即使getMany
return的空初始化值也不允许.map()
不是函数错误
let query: Array<any> = new Array<any>(size);
如果您已经为数组的 return 结果定义了 class 类型,那么 使用 any
类型是不可取的,然后使用该 class 类型并具有大小对于数组(它是可选的)
如果您没有 return 任何东西,请使用 forEach
而不是 map
。
forEach()
方法实际上没有 return 任何东西(未定义)。它只是对数组中的每个元素调用提供的函数。
map()
方法将对数组中的每个元素调用提供的函数。不同之处在于 map()
使用 return 值,实际上 return 是一个相同大小的新数组。
let query = [
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
},
{
"id": 40,
"createdAt": "2018-07-23T10:01:49.939Z",
"updatedAt": "2018-07-23T10:01:49.939Z",
"createdBy": 1,
"updatedBy": null,
"state": 1,
"version": 1,
"requestStatus": 1,
}
];
let startDate = [];
let endDate = [];
query.forEach(leaveRequest => {
startDate.push(leaveRequest.createdAt);
endDate.push(leaveRequest.updatedAt);
});
console.log(startDate);
console.log(endDate);
您上面的所有答案几乎都是正确的,但您可能会忘记 async
和 await
因为当我应用这些时,它的所有属性也都有效。
async functionName() {
const startDate = [];
const endDate = [];
let query;
query = await this.createQueryBuilder("LeaveRequest")
.where("LeaveRequest.employeeId = :employeeId", { employeeId })
.getMany();
query.leaveRequest.map(function (leaveRequest) {
leaveRequest.map(function (values) {
startDate.push(values.startDate);
endDate.push(values.endDate);
});
});
return {startDate, endDate};
}