games = allgames.filter(g => games.filter(g => g.gameState === '0').map(i => i.gameId).indexOf(g.id) !== -1)
###//提取出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中的这一项,则返回
)