.findIndex不是对象数组的函数

时间:2018-05-02 15:47:44

标签: javascript arrays ecmascript-6

我在TypeScript中定义了en数组:

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 :(得分:1)

caseLocations是一个对象,但数字为键。

您可以知道,因为您提供给我们{}的数据的括号表示它是一个对象。

如果它是一个数组,它应该是这样的:[0: {…}, 1: {…}, 2: {…}, 3: {…}, 4: {…}]。使用这些括号:[]

答案 1 :(得分:1)

caseLocations是一个对象,而不是一个数组。要使用splicefindIndex等数组方法,必须先使用Object.values()函数将其转换为数组:

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

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