Я получаю сообщение об ошибке при фильтрации массива методом startWith.
Ошибка: невозможно прочитать свойство startWith of undefined
Вот мой массив:
let testdata = [
{
_id: "5d0876833827c2176cae90df",
MobileNumber: "965XXXXXXX",
Keyword: "ACCESSORIES",
DateStamp: 1560835715501,
id: "5d0876833827c2176cae90df"
},
{
_id: "5d0876833827c2176cae90e0",
MobileNumber: "965XXXXXXX",
Keyword:
"ACCESSORIES, ANNIVERSARY, BABY, BAGS, BATHING SUIT, BELTS,
BIRTHDAY, BIRTHDAY GIFT, BRAND, BRANDS, CHILDREN, CLOTHING,
DateStamp: 1560835715501,
id: "5d0876833827c2176cae90e0"
},
{
_id: "5d0876833827c2176cae90e1",
MobileNumber: "965XXXXXXX",
Keyword:
"ACCESSORIES, ANNIVERSARY, BABY, BAGS, BATHING SUIT, BELTS,
BIRTHDAY, BIRTHDAY GIFT, BRAND, BRANDS, CHILDREN, CLOTHING,
COMFORT, DEALS, DISCOUNT, DRESS, DRESSES, EXCHANGE, FASHION,
GIFT, GIFT CARD, GLASSES, HAIR.",
DateStamp: 1560835715501,
id: "5d0876833827c2176cae90e1"
},
{
_id: "5d08c7c79d70334824470fb4",
Name: "JOHN",
MobileNumber: "961XXXXXXX",
AnotherNumber: "NULL",
Email: "NULL",
FamilyName: "SMITH",
Gender: "M",
DateStamp: 1560856519847,
id: "5d08c7c79d70334824470fb4"
},
{
_id: "5d08c7c79d70334824470fb6",
Name: "ANTHONY",
MobileNumber: "961XXXXXXX",
AnotherNumber: "NULL",
Email: "NULL",
FamilyName: "JR",
Gender: "M",
DateStamp: 1560856519848,
id: "5d08c7c79d70334824470fb6"
},
{
_id: "5d0884ef3827c2176cb2a970",
MobileNumber: "96170359896",
PlateNumber: "NULL",
CarModel: "NULL",
CarType: "NULL",
DateStamp: 1560839407029,
id: "5d0884ef3827c2176cb2a970"
},
{
_id: "5d0884ef3827c2176cb2a971",
MobileNumber: "961XXXXXXXX",
PlateNumber: "P293676",
CarModel: "SEDAN",
ProductionDateOfCar: 1483228800000,
PurchaseDateOfCar: 1499281200000,
CarType: "HONDA",
DateStamp: 1560839407029,
id: "5d0884ef3827c2176cb2a971"
}
];
console.info(testdata.filter(d => d.Keyword.startsWith('ACCESS))); //getting error
я ожидал, что все записи начинаются с «ДОСТУП».
Как применить метод startWith к нескольким объектам, имеющим разные свойства в одном массиве?
Возможно, какая-то строка в ваших данных не закрыта должным образом.
вам нужно будет отфильтровать эти элементы с помощью KeyWord prop console.info(testdata.filter({KeyWord} => KeyWord && Keyword.startsWith('ACCESS')));



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


Сначала вам нужно проверить, существует ли свойство Keyword:
console.info(testdata.filter(d => d.Keyword && d.Keyword.startsWith('ACCESS')));
У вас есть много объектов, у которых нет свойства KeyWord, поэтому вам также нужно учитывать эти случаи:
testdata.filter(d => d.KeyWord && d.Keyword.startsWith('ACCESS'));
Или, если свойство KeyWord потенциально может иметь тип, отличный от строки:
testdata.filter(d => typeof d.KeyWord === 'string' && d.Keyword.startsWith('ACCESS'));
есть некоторые объекты, у которых нет keyword. Первая проверка его существования.
console.info(testdata1.filter(d =>d.Keyword ? d.Keyword.startsWith('ACCESS') : false))
Не все ваши объекты имеют свойство
Keyword, поэтому для некоторых оно будетundefined, что даст вам вашу ошибку