在 JavaScript 上过滤数据关系

我在这里有关于变量的数据:


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

}


至尊宝的传说
浏览 119回答 3
3回答

撒科打诨

您发布的数据格式无效。我猜你想要一个数组,在这种情况下你的数据应该是这样的结构: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);

慕仙森

您可以使用以下语法。您可以研究箭头运算符以更好地理解这一点。respon.text = data.filter(d => message.includes(d.FID))[0].Provinsi;请注意,您需要处理未找到该值的情况。

慕田峪7331174

您的数据没有有效的格式,例如,您可以改用数组,如下所示: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']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript