我想知道是否有人可以帮助我遍历这个数组,以便将cardNumber包含在deviceListJson中.

所以现在我有两个json文件,我把它们读出来了.

const deviceListData = await readJSON(deviceFilePath);
const playerListData = await readJSON(playersFilePath);

DeviceFilePath包含如下所有设备:

{
    "deviceId": "9331d5fwwd77",
    "slot": 1,
    "deviceType": "GAME"
},
{
    "deviceId": "9221d5fwwd77",
    "slot": 3,
    "deviceType": "GAME"
},
{
    "deviceId": "9001d5fwwd77",
    "slot": 10,
    "deviceType": "GAME"
},
{
    "deviceId": "9331d5fww007",
    "slot": 11,
    "deviceType": "GAME"
},
{
    "deviceId": "9331d5f00077",
    "slot": 19,
    "deviceType": "GAME"
}

PlayerListData包含所有的播放器信息json,如下所示:

{
    "cardNumber": "199",
    "firstName": "TIM",
    "middleName": "P",
},
{
    "cardNumber": "110",
    "firstName": "JACK",
    "middleName": "Z",
},
{
    "cardNumber": "111",
    "firstName": "MICKEY",
    "middleName": "A",
}

我想做的只是将一个随机的卡号从playerListData Json添加到deviceListData Json中.

例如,deviceListData json将如下所示:

{
    "deviceId": "9331d5fwwd77",
    "slot": 1,
    "deviceType": "GAME",
    "cardNumber": "111"
},
{
    "deviceId": "9221d5fwwd77",
    "slot": 3,
    "deviceType": "GAME",
     "cardNumber": "110"
},
{
    "deviceId": "9001d5fwwd77",
    "slot": 10,
    "deviceType": "GAME",
     "cardNumber": "199"
},
{
    "deviceId": "9331d5fww007",
    "slot": 11,
    "deviceType": "GAME",
    "cardNumber": "199"
},
{
    "deviceId": "9331d5f00077",
    "slot": 19,
    "deviceType": "GAME",
    "cardNumber": "111"
}

所以我做了一张这样的 map :

const cardNumber = playerListData.map((item) => item.cardNumber);
console.log(cardNumber);

它输出这个数组(我注意到它没有包括密钥,只包括卡号数组中的值)

[ '199', '110', '111' ]

当我将整个代码拼凑在一起时,发生的情况是它将playerListJson中的所有字段添加到DeviceListJson中,如下所示:

{
    "deviceId": "9331d5fwwd77",
    "slot": 1,
    "deviceType": "GAME",
    "cardNumber": "111",
    "firstName": "MICKEY",
    "middleName": "A"
},
{
    "deviceId": "9221d5fwwd77",
    "slot": 3,
    "deviceType": "GAME",
    "cardNumber": "110",
    "firstName": "JACK",
    "middleName": "Z"
},
{
    "deviceId": "9001d5fwwd77",
    "slot": 10,
    "deviceType": "GAME",
    "cardNumber": "199",
    "firstName": "TIM",
    "middleName": "P"
},
{
    "deviceId": "9331d5fww007",
    "slot": 11,
    "deviceType": "GAME",
    "cardNumber": "199",
    "firstName": "TIM",
    "middleName": "P"
},
{
    "deviceId": "9331d5f00077",
    "slot": 19,
    "deviceType": "GAME",
    "cardNumber": "111",
    "firstName": "MICKEY",
    "middleName": "A"
}

代码是这样的:

export async function assignPlayerCards() {
  try {
    const deviceListData = await readJSON(deviceFilePath);
    const playerListData = await readJSON(playersFilePath);
    const cardNumber = playerListData.map((item) => item.cardNumber);
    

    // Function to get a random card number from player list json
    function getRandomJson1Element() {
      const randomIndex = Math.floor(Math.random() * cardNumber.length);
      // console.log(cardNumber[randomIndex]);
      return playerListData[randomIndex];
    }

    // Update each element in device JSON with a random card number from player list JSON
    deviceListData.forEach((element) => {
      const randomElement = getRandomJson1Element();
      Object.assign(element, randomElement);
    });

   
    await writeJSON(deviceFilePath, deviceListData);
    console.log("Headers set for devices");
  } catch (error) {
    throw error;
  }
}

我做错了什么,我如何才能使它满足我的要求,即只需将cardNumber添加到deviceListJson中?

推荐答案

现在您正在使用Object.assign添加所有字段,您要做的是只添加一个字段,这样您就可以替换您的forEach循环:

// Update each element in device JSON with a random card number from player list JSON
deviceListData.forEach((element) => {
  const randomElement = getRandomJson1Element();
  Object.assign(element, randomElement);
});

具有以下功能:

// Update each element in device JSON with a random card number from player list JSON
deviceListData.forEach((element) => {
  element.cardNumber = getRandomJson1Element().cardNumber;
});

Javascript相关问答推荐

为什么我达到了时间限制!?LeetCode链接列表循环(已解决,但需要解释!)

如何访问react路由v6加载器函数中的查询参数/搜索参数

如何才能拥有在jQuery终端中执行命令的链接?

jQuery s data()[storage object]在vanilla JavaScript中?'

S文本内容和值不必要的不同

如何通过将实例方法的名称传递给具有正确类型的参数的继承方法来调用实例方法?

使用Google API无法进行Web抓取

基于props 类型的不同props ,根据来自接口的值扩展类型

在SHINY R中的嵌套模块中,不能使用Java代码

使用父标签中的Find函数查找元素

基于产品ID更新条带产品图像的JavaScript命中错误

在不扭曲纹理的情况下在顶点着色器中旋转UV

如何修复使用axios运行TSC index.ts时出现的错误?

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

FireBase FiRestore安全规则-嵌套对象的MapDiff

无法使用npm install安装react-dom、react和next

如何在TransformControls模式下只保留箭头进行翻译?

如何在加载页面时使锚定标记成为焦点

使用jQuery每隔几秒钟突出显示列表中的不同单词

用内嵌的含selenium的Java脚本抓取网站