У меня есть строка:
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
В чем проблема?
объект в массиве



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваши две строки не содержат одни и те же символы, хотя визуально они выглядят одинаково:
const city = "Hải Phòng";
const objV = "Hải Phòng";
console.info(city === objV); // falseЭто потому, что вы используете предварительно составленные формы:
ả (латинская строчная буква а с крючком вверху)ò (латинская строчная буква о с гравировкой)в строке поиска city. Эти предварительно составленные символы являются устаревшими символами Unicode, вместо этого вы должны использовать разложенные формы, которые являются символами, используемыми в вашем значении объекта:
ả (латинская строчная буква а a, за которой следует комбинированный крючок выше ̉)ò (латинская строчная буква о o, за которой следует сочетание серьезного ударения ̀)(да, они отличаются от перечисленных ранее). Вы можете сделать это, обновив свой city, чтобы он содержал "Hải Phòng" (который использует разложенные символы для ả и ò). Если вы не можете разложить свою строку по какой-либо причине, вы можете использовать String.prototype.normalize() для входной строки или строки объекта, например:
const city = 'Hải Phòng'.normalize("NFD"); // or just use `const city = "Hải Phòng";`
const data = [{},{},{},{ MaTinhThanh: 'xx', TenTinhThanh: 'Hải Phòng' },{},{}];
const mycity = data.find( c=>c.TenTinhThanh?.includes(city));
console.info(mycity);Прежде всего убедитесь, что свойство существует, а затем сопоставьте его со значением города. Похоже, что-то не так с кодировкой строк, потому что я получил ошибку до того, как скопировал значение переменной города в объект.
Обновлено: похоже, что другой пользователь подробно изложил эту проблему.
let city = 'Hải Phòng';
const data = [{},{},{},{ MaTinhThanh: 'xx', TenTinhThanh: 'Hải Phòng' },{},{}];
let mycity = data.find(c => c.TenTinhThanh && c.TenTinhThanh === city);
console.info(mycity);
Вы хотите найти в массиве указанный город?