Javascript 在2个数组之间查找唯一标识符

Javascript 在2个数组之间查找唯一标识符,javascript,arrays,foreach,fetch,Javascript,Arrays,Foreach,Fetch,使用fetch API对端点执行fetch后,我的响应由包含两个数组的对象组成,看起来像这样 {游戏列表:数组(192),所有者列表:数组(4)} 每个阵列中都有一个唯一的标识符,两个阵列共享,例如node\u id 我需要一种方法检索所有游戏,一个唯一的所有者,所以在最后我将有一个4个所有者的名单,以及每个所有者有多少游戏(希望这是有意义的) 到目前为止,我得到的是以下信息: const getData = () => { fetch('./data.json') .then

使用fetch API对端点执行fetch后,我的响应由包含两个数组的对象组成,看起来像这样

{游戏列表:数组(192),所有者列表:数组(4)}

每个阵列中都有一个唯一的标识符,两个阵列共享,例如
node\u id

我需要一种方法检索所有游戏,一个唯一的所有者,所以在最后我将有一个4个所有者的名单,以及每个所有者有多少游戏(希望这是有意义的)

到目前为止,我得到的是以下信息:

const getData = () => {
  fetch('./data.json')
    .then(res => res.json())
    .then(data => {
      console.log(data) // all data

      const allGames = data.games_list
      const allOwners = data.owner_list

      // Get all id's for games_list and owner_list
      const gameNodeIds = allGames.map(id => id.node_id)
      const ownerNodeIds = allOwners.map(id => id.node_id)
    })
    .catch(err =>  console.error(`Error: ${err}`))
}
返回的数据示例:

{
  "games_list": [
    {
      "game": "Overwatch",
      "game_type": "Shooter",
      "developers": "Blizzard",
      "node_id": "123456778"
    }
  ],
  .....
  "owners_list": [
    {
      "name": "John Doe",
      "age": "25",
      "Occupation": "gamer",
      "node_id": "123456778"
    }
  ]
}

这是我所能得到的,我真的需要一些帮助,所以所有的帮助都将被感谢

那么您必须找到您的特定节点id在所有游戏中存在的次数

var games_by_owner = {};
allOwners.forEach(function(ele, idx){
   gameNoeIds.forEach(function(eleG, idxG){
       if(typeof games_by_owner[idx] == 'undefined') {
           games_by_owner[idx] = [];
       }

       if (ele.node_id == eleG.node_id) {      
           games_by_owner[idx].push(idxG);
       }
   });
});

因此,您将为每个所有者收集其游戏idxG的idx数组。

因此您必须找到您的特定节点id在所有游戏中存在的次数

var games_by_owner = {};
allOwners.forEach(function(ele, idx){
   gameNoeIds.forEach(function(eleG, idxG){
       if(typeof games_by_owner[idx] == 'undefined') {
           games_by_owner[idx] = [];
       }

       if (ele.node_id == eleG.node_id) {      
           games_by_owner[idx].push(idxG);
       }
   });
});

因此,您将为每位游戏所有者收集其游戏idxG的idx数组。

使用对象或地图以及公共键值作为属性来创建一个
counts
对象

以下假设某些游戏的所有者列表中可能没有所有者,您只需要现有所有者的计数

let数据={
“游戏列表”:[
{
“游戏”:“守望”,
“游戏类型”:“射手”,
“开发者”:“暴雪”,
“节点id”:“123456778”
}
],
“业主名单”:[
{
“姓名”:“约翰·多伊”,
“年龄”:“25岁”,
“职业”:“玩家”,
“节点id”:“123456778”
}
]
}
让ownerCounts=data.owners\u list.reduce((a,c)=>(a[c.node\u id]=0,a),{});
data.games_list.forEach(g=>g.node_id在ownerCounts&&ownerCounts[g.node_id]++);

console.log(ownerCounts)
使用对象或映射以及公共键值作为属性来创建
计数
对象

以下假设某些游戏的所有者列表中可能没有所有者,您只需要现有所有者的计数

let数据={
“游戏列表”:[
{
“游戏”:“守望”,
“游戏类型”:“射手”,
“开发者”:“暴雪”,
“节点id”:“123456778”
}
],
“业主名单”:[
{
“姓名”:“约翰·多伊”,
“年龄”:“25岁”,
“职业”:“玩家”,
“节点id”:“123456778”
}
]
}
让ownerCounts=data.owners\u list.reduce((a,c)=>(a[c.node\u id]=0,a),{});
data.games_list.forEach(g=>g.node_id在ownerCounts&&ownerCounts[g.node_id]++);
console.log(ownerCounts)
您可以组合
map()
filter()
以返回所需结构的所需结果

请参阅代码片段

var数据={
“游戏列表”:[
{
“游戏”:“游戏1”,
“游戏类型”:“射手”,
“开发者”:“暴雪”,
节点id:“1”
},
{
“游戏”:“游戏2”,
“游戏类型”:“射手”,
“开发者”:“暴雪”,
节点id:“1”
},
{
“游戏”:“游戏3”,
“游戏类型”:“射手”,
“开发者”:“暴雪”,
节点id:“2”
}
],
“业主名单”:[
{
“名称”:“所有者1”,
“年龄”:“25岁”,
“职业”:“玩家”,
节点id:“1”
},
{
“名称”:“所有者2”,
“年龄”:“25岁”,
“职业”:“玩家”,
节点id:“2”
},
{
“名称”:“所有者3”,
“年龄”:“25岁”,
“职业”:“玩家”,
节点id:“3”
}
]
}
const allGames=data.games\u列表;
const allOwners=data.owners\u list;
var result=allOwners.map(所有者=>
({owner:owner.name,
games:allGames.filter(game=>game.node\u id===owner.node\u id
).长度
})
)
控制台日志(结果)
您可以组合
map()
filter()
以返回所需结构的所需结果

请参阅代码片段

var数据={
“游戏列表”:[
{
“游戏”:“游戏1”,
“游戏类型”:“射手”,
“开发者”:“暴雪”,
节点id:“1”
},
{
“游戏”:“游戏2”,
“游戏类型”:“射手”,
“开发者”:“暴雪”,
节点id:“1”
},
{
“游戏”:“游戏3”,
“游戏类型”:“射手”,
“开发者”:“暴雪”,
节点id:“2”
}
],
“业主名单”:[
{
“名称”:“所有者1”,
“年龄”:“25岁”,
“职业”:“玩家”,
节点id:“1”
},
{
“名称”:“所有者2”,
“年龄”:“25岁”,
“职业”:“玩家”,
节点id:“2”
},
{
“名称”:“所有者3”,
“年龄”:“25岁”,
“职业”:“玩家”,
节点id:“3”
}
]
}
const allGames=data.games\u列表;
const allOwners=data.owners\u list;
var result=allOwners.map(所有者=>
({owner:owner.name,
games:allGames.filter(game=>game.node\u id===owner.node\u id
).长度
})
)

控制台日志(结果)
你能用几个例子替换
Array(xx)
吗?我更新了@GetOffMyLawn我的描述你能用几个例子替换
Array(xx)
吗?我更新了@GetOffMyLawn我的描述