代码之家  ›  专栏  ›  技术社区  ›  DMS-KH

.map()don't不是typescript中的函数

  •  0
  • DMS-KH  · 技术社区  · 7 年前

    对象,javascript中的 code>不具有方法 .map() ,it is available only data type as array [] so i though the below data format is correct but why i can not use .map()

    我想查询数组数据,并使用 .map()获取其值,如下所示

    我得到错误消息: .map()don't is not a function in typescript.

    const startdate=[];
    const enddate=[];
    允许查询;
    query=this.createQueryBuilder(“leaveRequest”)。
    .where(“leaveRequest.employeeID=:employeeID”,employeeID)
    .getmany();
    query.leaverequest.map(函数(leaverequest){
    leaverequest.map(函数(值){
    startdate.push(values.startdate);
    enddate.push(values.enddate);
    (});
    (});
    返回开始日期,结束日期;
    < /代码> 
    
    

    数据格式 当我执行return query;i got below format;。

    。[
    {
    “ID”:40,
    “createdat”:“2018-07-23t10:01:49.939z”,
    “updatedat”:“2018-07-23t10:01:49.939z”,
    “CreatedBy”:1,
    “updatedBy”:空,
    “状态”:1,
    “版本”:1,
    “请求状态”:1,
    }
    {
    “ID”:40,
    “createdat”:“2018-07-23t10:01:49.939z”,
    “updatedat”:“2018-07-23t10:01:49.939z”,
    “CreatedBy”:1,
    “updatedBy”:空,
    “状态”:1,
    “版本”:1,
    “请求状态”:1,
    }
    {
    “ID”:40,
    “createdat”:“2018-07-23t10:01:49.939z”,
    “updatedat”:“2018-07-23t10:01:49.939z”,
    “CreatedBy”:1,
    “updatedBy”:空,
    “状态”:1,
    “版本”:1,
    “请求状态”:1,
    }
    ]
    < /代码> 
    
    

    你可以看到图像

    .图().

    我要查询数组数据并使用图()函数获取其值,如下所示

    我收到错误消息:.map()don't不是typescript中的函数

    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,
    }
    ]
    

    你可以看到图像

    3 回复  |  直到 7 年前
        1
  •  4
  •   Keshan Nageswaran    7 年前

    定义的类型 query 初始化它,所以即使 getMany 返回空的初始化值不允许 .map() 不是函数错误

    let query: Array<any> = new Array<any>(size);
    

    使用 any 如果已经为数组的返回结果定义了类类型,则不建议使用类型,然后使用该类类型并具有数组的大小(可选)

    使用 forEach 而不是 map 如果你不归还任何东西。

    forEach() 方法实际上不返回任何内容(未定义)。它只是对数组中的每个元素调用一个提供的函数。

    这个 map() 方法将对数组中的每个元素调用提供的函数。区别在于 MAP() 使用返回值并实际返回相同大小的新数组。

    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);
        2
  •  1
  •   Sajeetharan    7 年前

    你不需要内部地图,只要这样就行了,

    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);
        3
  •  0
  •   DMS-KH    7 年前

    以上的答案几乎都是正确的,但你可能会忘记 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};
        }