我想知道是否有人可以帮助我遍历这个数组,以便将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中?