Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 棱角;这是未定义的;尝试递增数字变量时,不确定I';我做错了_Javascript_Arrays_Angular_Typescript - Fatal编程技术网

Javascript 棱角;这是未定义的;尝试递增数字变量时,不确定I';我做错了

Javascript 棱角;这是未定义的;尝试递增数字变量时,不确定I';我做错了,javascript,arrays,angular,typescript,Javascript,Arrays,Angular,Typescript,我基本上是在计算数组中一个对象有两个等于某个值的键的次数。我想在每次满足条件时增加这个数字 如果我使用console.log查看“for”循环的触发次数,则一切正常,一切正常。但是当我试图用这个来做一些事情时,我突然发现了一些未定义的错误,即使我只是想在控制台上阅读它 代码: function countAccepted(arr) { for (let i = 0; i < arr.length; i++) { if (arr[i].DeliveryStatus == "Acc

我基本上是在计算数组中一个对象有两个等于某个值的键的次数。我想在每次满足条件时增加这个数字

如果我使用console.log查看“for”循环的触发次数,则一切正常,一切正常。但是当我试图用这个来做一些事情时,我突然发现了一些未定义的错误,即使我只是想在控制台上阅读它

代码:

function countAccepted(arr) {
  for (let i = 0; i < arr.length; i++) {
    if (arr[i].DeliveryStatus == "Accepted" && arr[i].BookingId == "0") {
      console.log("poop");
      this.multidropAccepted++;
    }
  }
}
接受的功能计数(arr){
for(设i=0;i
如果您将Angular与typescript一起使用,则不要使用
函数
关键字来编写方法。因为它将创建自己的作用域&因此您将无法使用它内部的
this
访问类级属性。将方法代码更新为:

countAccepted(arr) {
  for (let i = 0; i < arr.length; i++) {
    if (arr[i].DeliveryStatus == "Accepted" && arr[i].BookingId == "0") {
      console.log("poop");
      this.multidropAccepted++;
    }
  }
}
countAccepted(arr){
for(设i=0;i
我最后这样写:

let countAccepted = data => {
        for (let i = 0; i < data.length; i++) {
          if (
            data[i].DeliveryStatus == "Accepted" &&
            data[i].BookingId == "0"
          ) {
            this.multidropAccepted++;
          }
        }
      };
这就是整个事情的样子:

constructor(
    private adalService: AdalService,
    private service: DeliveriesService,
    private ngRedux: NgRedux<IAppState>
  ) {
    this.service.getSectionAll();
    this.sectionAllSubscription = this.sectionAll.subscribe(data => {
      let countAccepted = data => {
        for (let i = 0; i < data.length; i++) {
          if (
            data[i].DeliveryStatus == "Accepted" &&
            data[i].BookingId == "0"
          ) {
            this.multidropAccepted++;
          }
        }
      };

      let countDelivered = data => {
        for (let i = 0; i < data.length; i++) {
          if (
            data[i].DeliveryStatus == "Delivered" &&
            data[i].BookingId == "0"
          ) {
            this.multidropDelivered++;
          }
        }
      };

      (this.dataSource = new MatTableDataSource(
        data.filter(
          (value, index, array) =>
            !array.filter(
              (v, i) => JSON.stringify(value) == JSON.stringify(v) && i < index
            ).length
        )
      )),
        (this.dataSource.sort = this.sort),
        (this.dataSource.paginator = this.paginator),
        countAccepted(data);
      countDelivered(data);
    });
  }
构造函数(
私人adalService:adalService,
私人服务:交付服务,
私有ngRedux:ngRedux
) {
this.service.getSectionAll();
this.sectionAllSubscription=this.sectionAll.Subscription(数据=>{
让countAccepted=data=>{
for(设i=0;i{
for(设i=0;i
!array.filter(
(v,i)=>JSON.stringify(value)==JSON.stringify(v)&&i
在哪里调用此函数?可能您在其中执行函数的上下文没有MultiDropAccept变量?在Angular中,您定义了一个函数,如conAccept(arr){…}-no“function before”-并且您必须在声明变量之前-通常在constructor@Eliseo现在我明白了,但是如果是这样的话,那么我需要编写整个函数,在.subscribe中调用它,对吗?我只是试了一下,我没有得到“找不到名称”countaccepted“,如果你想执行你定义的函数,那么就使用这个.myFunction()。“this”是“component”。啊,我明白了,但是我不是在.subscribe外部编写函数,然后在内部调用它,而是在其中编写整个函数?我只是尝试了一下,我从intellisense得到了“找不到名字‘接受计数’”。
constructor(
    private adalService: AdalService,
    private service: DeliveriesService,
    private ngRedux: NgRedux<IAppState>
  ) {
    this.service.getSectionAll();
    this.sectionAllSubscription = this.sectionAll.subscribe(data => {
      let countAccepted = data => {
        for (let i = 0; i < data.length; i++) {
          if (
            data[i].DeliveryStatus == "Accepted" &&
            data[i].BookingId == "0"
          ) {
            this.multidropAccepted++;
          }
        }
      };

      let countDelivered = data => {
        for (let i = 0; i < data.length; i++) {
          if (
            data[i].DeliveryStatus == "Delivered" &&
            data[i].BookingId == "0"
          ) {
            this.multidropDelivered++;
          }
        }
      };

      (this.dataSource = new MatTableDataSource(
        data.filter(
          (value, index, array) =>
            !array.filter(
              (v, i) => JSON.stringify(value) == JSON.stringify(v) && i < index
            ).length
        )
      )),
        (this.dataSource.sort = this.sort),
        (this.dataSource.paginator = this.paginator),
        countAccepted(data);
      countDelivered(data);
    });
  }