账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    TypeScript 统计选中id数据为数组
    30
    0

    id目标结构:"IDs":"[1,2,3,4,5,6]"
    因为是在 ngFor 循环外用ID数组,取不到,所以赋给本地变量idAll.
    当前的情况是以 items 为单位输出多个数组。

    “位置1” 能以多个数组形式输出ID
    “位置2” 只能输出最后一组ID

    感觉现在 forEach() 用的不到位

    如下:
    getTotal(){
    this.datas.forEach(item => {
    this.arr = (item.items.filter(item1 => item1.checked).map(item1=> item1.id))
    console.log(this.idAll); // 位置1
    })
    console.log(this.idAll); // 位置2
    }

    当前结构tem:

    <div>
      <label><input type="checkbox" [(ngModel)]="checked" (change)="selectAll()">全选</label>
      <div style="padding-left:1em" *ngFor="let item of datas">
    
        <input id="checkbox6" type="checkbox" [(ngModel)]="item.checked" (change)="selectItemAll(item)">
        <label id="checkbox6">{{item.title}}</label>
    
        <div style="padding-left:1em" *ngFor="let item1 of item.items">
          <label><input type="checkbox" [(ngModel)]="item1.checked" (change)="selectItem(item1,item)">选择</label>
          名称:{{item1.name}} 价格:{{item1.price}}
        </div>  
    
      </div>
      总价:{{getTotal()}
    </div>
    
    
    数据结构包括ID(即 item1.id):
    
      public: idAll: number[];
    
      checked = false;
      datas = [{
        checked: false,
        title: '北京大学',
        items: [{
          checked: false,
          name: '商品11',
          price: 2,
          id: 601
        }, {
          checked: false,
          name: '商品12',
          price: 3,
          id: 602
        }]
      }, {
        checked: false,
        title: '复旦大学',
        items: [{
          checked: false,
          name: '商品21',
          price: 2,
          id: 603
        }, {
          checked: false,
          name: '商品22',
          price: 3,
          id: 604
        }]
      }];
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 三年如梦 普通会员 1楼

      在TypeScript中,你可以使用Array.prototype.map()方法来统计选中id数据为数组的元素数量。以下是一个简单的示例:

      ```typescript function countIdsInArray(arr: number[]): number { return arr.map(id => arr.includes(id)).length; }

      let ids = [1, 2, 3, 4, 5]; console.log(countIdsInArray(ids)); // 输出:2 ```

      在这个示例中,我们首先定义了一个函数countIdsInArray(),它接受一个数组arr作为参数,并返回一个整数,表示arr中id为数组的元素数量。然后,我们创建了一个名为ids的数组,并调用countIdsInArray()函数来统计它中id为数组的元素数量。最后,我们使用console.log()函数来打印出结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部