.findIndex не является функцией для массива объекта - PullRequest
0 голосов
/ 02 мая 2018

Я определяю массив в TypeScript:

caseLocations: Array<CaseLocation>()

caseLocations получает следующие данные:

{0: {…}, 1: {…}, 2: {…}, 3: {…}, 4: {…}}

Когда я пытаюсь запустить

state.results.caseLocations.splice(
    state.results.caseLocations.findIndex((i) => i.objectid === action.objectId), 1
);

Я получаю ошибку:

caseLocations.findIndex не является функцией

Почему это не работает? Я попробовал также .map функцию. Та же ошибка.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

caseLocations - это объект, а не массив. Чтобы использовать методы массива, такие как splice или findIndex, сначала необходимо преобразовать его в массив, используя функцию Object.values():

state.results.caseLocations = Object.values(state.results.caseLocations);

state.results.caseLocations.splice(
    state.results.caseLocations.findIndex((i) => i.objectid === action.objectId), 1
);
0 голосов
/ 02 мая 2018

caseLocations - это объект, но с номером в качестве ключа.

Вы можете знать, что, поскольку квадратные скобки вокруг данных, которые вы нам предоставили, {} означают, что это объект.

Если бы это был массив, он должен был выглядеть следующим образом: [0: {…}, 1: {…}, 2: {…}, 3: {…}, 4: {…}]. С этими скобками: [].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...