Linq+js

该博客主要展示了如何使用Linq库对一组学生数据进行操作,包括筛选、排序、求和、平均数计算等。通过示例代码,作者演示了如何获取特定条件的数据子集,如成绩在70-90之间的学生,以及计算每个学生的平均成绩。此外,还展示了如何根据学生姓名分组数据并计算平均分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<template>
  <div class="key">

    <pre>{{ stuIdList }}</pre>

    <div>学生总成绩为:{{ totalScore }}分</div>

    <div>学生求平均数:{{ averageScore }}分</div>

    <pre>取值{{ getValue }}</pre>

    <div>张三的平均成绩:{{ firstStuAverageScore }}</div>
    <div>李四的平均成绩:{{ secondStuAverageScore }}</div>
    <div>刘能的平均成绩:{{ thirdStuAverageScore }}</div>


  </div>

</template>

<script>
import Enumerable from 'linq'

export default {
  name: "keywords",
  data() {
    return {
      isShow: false,
      defaultHeight: '',
      nowHeight: '',
      stuData: [
        {id: 1, name: '张三', phone: 15822698996, subject: '语文', score: 88},
        {id: 2, name: '张三', phone: 15822698996, subject: '数学', score: 56},
        {id: 3, name: '张三', phone: 15822698996, subject: '英语', score: 87},
        {id: 4, name: '李四', phone: 18522158390, subject: '语文', score: 90},
        {id: 5, name: '李四', phone: 18522158390, subject: '数学', score: 71},
        {id: 6, name: '李四', phone: 18522158390, subject: '英语', score: 89},
        {id: 7, name: '刘能', phone: 17695996601, subject: '语文', score: 100}
      ],
      stuIdList: [],
      totalScore: 0,
      averageScore: 0,
      getValue: 0,
      firstStuAverageScore: 0,
      secondStuAverageScore: 0,
      thirdStuAverageScore: 0,
    }

  },
  created() {
    this.showId()
    //   this.showInfo()
  },
  methods: {
    showId() {
      // this.stuIdList = Enumerable.from(this.stuData).skip(5).take(5).toArray()
      let res = Enumerable.from(this.stuData)
      // this.stuIdList = res.where(item => item.score > 70 && item.subject === '英语' || item.subject === '数学')
      //     .toArray()
      //语文学科降序排序
      //this.stuIdList=res.where(item=>item.subject=='语文').orderByDescending(item=>item.score).toArray()
      //语文学科升序排序
      //this.stuIdList=res.where(item=>item.subject=='语文').orderBy(item=>item.score).toArray()
      //.thenBy方法是后执行的
      //this.stuIdList=res.orderBy(item=>item.subject).thenByDescending(item=>item.score).toArray()
      //this.totalScore = this.stuData.map(item => item.score).reduce((pre, n) => pre + n)
      //linq求和方法
      this.totalScore = res.sum(item => (item.score))
      console.log(res)
      //linq求平均数
      this.averageScore = res.average(item => item.score)
      //获取学生成绩升序排列的第一条数据
      this.getValue = res.orderBy(item => item.score).lastOrDefault()
      //获取成绩在70-90之间的学生的升序排列
      this.stuIdList = res.where(item => (item.score > 70 && item.score < 90)).orderBy(item => item.score).toArray()
      //计算每个学生的平均成绩
      this.stuIdList = Enumerable.from(this.stuData).groupBy(item => item.name).select(item => ({
        key: item.key(),
        averageScore: item.average(item => item.score)
      })).toArray()
      // this.firstStuAverageScore=Enumerable.from(this.stuIdList).average(item=>item.source.score)

      this.stuIdList = res.groupBy(item => item.name).select(item => ({
        name: item.key(),
        info: item.getSource()
      })).toArray().map(item => {
        return {
          stuName: item.name,
          phone: item.info[0].phone,
          //totalScore:Enumerable.from(item.info).sum(item=>item.score),
          totalScore:item.info.map(item=>item.score).reduce((pre,n)=>pre+n),
          averageScore:(Enumerable.from(item.info).average(item=>item.score)).toFixed(2)
        }
      })

    },
    showInfo() {
      this.stuIdList = this.stuData.map(item => {
        return {
          stuId: item.id,
          stuName: item.name,
          add: item.phone + item.score
        }
      })
    },
    stuAverageScore(name) {
      let res = Enumerable.from(this.stuData)
      return res.where(item => item.name == name).average(item => item.score)
    }
  }
}

</script>

<style scoped>


</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值