JavaScript начинает с метода, выдающего ошибку

Я получаю сообщение об ошибке при фильтрации массива методом 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, поэтому для некоторых оно будет undefined, что даст вам вашу ошибку

Nick Parsons 19.06.2019 10:42

Возможно, какая-то строка в ваших данных не закрыта должным образом.

Mohammad Usman 19.06.2019 10:43

вам нужно будет отфильтровать эти элементы с помощью KeyWord prop console.info(testdata.filter({KeyWord} => KeyWord && Keyword.startsWith('ACCESS')));

Borja Tur 19.06.2019 10:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
121
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Сначала вам нужно проверить, существует ли свойство 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))

Другие вопросы по теме