我有弦:
city = 'Hải Phòng'
和一个我从API中得到的数组,看起来像这样:
data = [{},{},{},{ MaTinhThanh: 'xx', TenTinhThanh: 'Hải Phòng' },{},{}]
我要在数据中查找对象:
mycity = data.find( c=>c.TenTinhThanh.includes(city))
上面给出了undefined
,但我希望
{ MaTinhThanh: 'xx', TenTinhThanh: 'Hải Phòng' }
我的API端点是:
https://donhang.vnpost.vn/api/api/TinhThanh/GetAll
我使用可视化代码、Axios、nodejs
我还尝试了获取两个字符串的长度:
data[3].TenTinhThanh.length` ====>11
city.length` ====>9
有什么问题吗?
2条答案
按热度按时间vmdwslir1#
您的两个字串不包含相同的字符,即使看起来相同:
这是因为您使用的是precomposed形式:
ả
(* 上面带钩的拉丁小写字母a *)ò
(* 带抑音符的拉丁小写字母o *)这些预先组合的字符是旧版Unicode字符,您应该使用分解形式,也就是对象值中使用的字符:
ả
(* 拉丁小写字母a*a
,后跟 * 组合上面的钩 *̉
)ò
(* 拉丁小写字母o*o
,后跟 * 组合重音符 *̀
)(yes你可以通过更新你的
city
来保存"Hải Phòng"
(它使用ả
和ò
的分解字符)。如果你因为某种原因不能分解你的字符串,你可以在你的输入字符串或你的目标字符串上使用String.prototype.normalize()
,例如:tkclm6bt2#
首先检查该属性是否存在,然后与city值进行匹配。看起来字符串的编码可能有问题,因为在将city var值复制到对象之前收到了一个错误。
编辑:看起来另一个用户详细地阐述了这个问题。