问答

能分析一下这段代码嘛!谢谢了

作者:admin 2021-04-18 我要评论

games = allgames.filter(g = games.filter(g = g.gameState === '0').map(i = i.gameId).indexOf(g.id) !== -1) ### //提取出games中gameState为'0'的数据var a...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

games = allgames.filter(g => games.filter(g => g.gameState === '0').map(i => i.gameId).indexOf(g.id) !== -1)

image.png

###
//提取出games中gameState为'0'的数据
var arr = games.filter(g => g.gameState === '0')
//上面过滤的数据,提取里面的gameId,整合为一个新数组arr
.map(i => i.gameId)

//从allgames中过滤数据,要求是数据的id在上面的arr中,并把过滤得到的数据赋值给games
games = allgames.filter(g => arr.indexOf(g.id) !== -1)
###

我还原了一下你这个场景哈 以后还是要多写注释 哈哈

let allgames = [
  {
    ...,
    id: '0001'
  }, {
    ...,
    id: '0002'
  }]

let games = [{
  ...,
  gameState: '1',
  gameId: '0003',
  gameName: '魂斗罗'
}, {
  ...,
  gameState: '0',
  gameId: '1',
  gameName: '冒险岛'
}]

games = allgames
  .filter(g => games
    .filter(g => g.gameState === '0')   //跟allgames没有关系,就是单纯的把games里gameState为0的全部过滤出来
    .map(i => i.gameId) //跟allgames没关系,然后把上一步拿到的gameState为0的对象只返回gameId这个字段  返回的格式为 [id1,id2,di3,...]
    .indexOf(g.id) !== -1 //然后把最开始allgames中每一项里的id跟上一步返回的数组做比较,若数组中有allgames中的这一项,则返回
  )


版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器