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

在 JavaScript 上过滤数据关系

在 JavaScript 上过滤数据关系

至尊宝的传说 2022-06-09 11:09:10
我在这里有关于变量的数据:const data = {FID: 11              Kode_Provi: 31              Provinsi: "DKI Jakarta"             },             {              FID: 20              Kode_Provi: 35              Provinsi: "Surabaya"              }我在设置消息 FID 时尝试过滤数据。想要的结果属性是Provinsi.例如,当我设置消息 FID=20 时,结果是泗水。这就是我现在正在做的事情:if (message.includes(data[0].FID)) {    respon.text = data[0].Provinsi} else if (message.includes(data[1].FID)) {    respon.text = data[1].Provinsi} 我想找到一种优化的方法,因为有很多数据。有什么建议这样做吗?if (message.includes(ask)) {    respon.text = answer}
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

您发布的数据格式无效。我猜你想要一个数组,在这种情况下你的数据应该是这样的结构:


const data = [

  {

    FID: 11,

    Kode_Provi: 31,

    Provinsi: "DKI Jakarta"

  },

  {

    FID: 20,

    Kode_Provi: 35,

    Provinsi: "Surabaya"

  }

]

现在,有了这种格式的数据,我们可以看看Array.prototype.filter函数。


使用这个filter函数,你可以编写自己的函数来做你想做的事:


/**

 * This function will return null if the message can't be found in the

 * data array or if either inputs are invalid.

 */

function getProvinsiForMessage(data, message) {

  if (data && message) {

    const result = data.filter(dataEntry => message.includes(dataEntry.FID));


    return result && result.length ? result[0].Provinsi : null;

  }


  return null;

}

现在你可以做你想做的事:


respon.text = getProvinsiForMessage(data, message);


查看完整回答
反对 回复 2022-06-09
?
慕仙森

TA贡献1827条经验 获得超7个赞

您可以使用以下语法。您可以研究箭头运算符以更好地理解这一点。

respon.text = data.filter(d => message.includes(d.FID))[0].Provinsi;

请注意,您需要处理未找到该值的情况。


查看完整回答
反对 回复 2022-06-09
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您的数据没有有效的格式,例如,您可以改用数组,如下所示:


const data = [

  { FID: 11, Kode_Provi: 31, Provinsi: "DKI Jakarta" },

  {

    FID: 20,

    Kode_Provi: 35,

    Provinsi: "Surabaya"

  }

];

然后过滤和映射以获得所有“Provinsi”:


let fid = 20;

data.filter(obj => obj.FID === fid).map(result => result.Provinsi); // ['Surabaya']


查看完整回答
反对 回复 2022-06-09
  • 3 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信