为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法可以搜索两个 JSON 文件?

有没有办法可以搜索两个 JSON 文件?

暮色呼如 2023-02-17 10:20:37
目前,我正在研究一个搜索两个不同 JSON 文件的项目。现在,我有:var search = message.content .split(/\s+/g) .slice(1) .join(' ');if (!search) return message.reply('Please give a character name!');var waifuobj = waifusearch; //My JSON filevar husbandoobj = husbandosearch; //My other JSON filelet WName = Object.values(waifuobj.waifuID).find( (value) => value.names.toLowerCase() === search.toLowerCase()).names;let HName = Object.values(husbandoobj.husbandoID).find( (value) => value.names.toLowerCase() === search.toLowerCase()).names;let WImg = Object.values(waifuobj.waifuID).find( (value) => value.names.toLowerCase() === search.toLowerCase()).img_url;let HImg = Object.values(husbandoobj.husbandoID).find( (value) => value.names.toLowerCase() === search.toLowerCase()).img_url;let WClaim = Object.values(waifuobj.waifuID).find( (value) => value.names.toLowerCase() === search.toLowerCase()).claims;let HClaim = Object.values(husbandoobj.husbandoID).find( (value) => value.names.toLowerCase() === search.toLowerCase()).claims;let embed = new MessageEmbed() .setTitle(`${WName}`) .setDescription(`Claims: ${WClaim}`) .setImage(`${WImg}`) .setColor('#f095d1') .setFooter(  `Powered by: 🎀Twintails API `,  `https://64.media.tumblr.com/1a1c3bcc08b5a048b90139a56fe7f415/tumblr_o9ku1rVS8z1vnqjx7o2_250.png` );message.channel.send(embed);我想要它以便它搜索两个 JSON 文件。此代码现在搜索 waifusearch JSON 并找到所有 waifu 名称、img_url 和声明。我想要它,所以如果一个人搜索丈夫的名字,它会通过丈夫搜索 JSON 文件而不是 waifusearch 文件来查找。waifuID 和 husbudoID 示例:
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

您可以将两个对象放在一个数组中,然后使用该Array.prototype.find()函数。


// array of both objects

var data = [waifuobj, husbandoobj];


// try this:

const { names, claims, img_url } = Object.values(

  Object.values(

    data.find((obj) =>

      Object.values(Object.values(obj)[0]).find(

        (value) => value.names.toLowerCase() === search.toLowerCase()

      )

    )

  )[0]

)[0];

编辑:我发现了一种使用该Array.prototype.reduce()功能的更紧凑的方式。


const data = [waifuobj, husbandoobj];


const { names, claims, img_url } = data

  .reduce((a, v) => a.concat(Object.values(Object.values(v)).flat()), [])

  .find(({ names }) => names.toLowerCase() === search.toLowerCase());


查看完整回答
反对 回复 2023-02-17
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号