未定义不是函数data [index] .push

时间:2019-05-16 09:27:30

标签: arrays reactjs react-native indexing undefined

我有一个名为:

的数组
const data = []

我做了一个函数,在其中我对数组进行了循环处理以检查名称是否已经存在。

 let index = data.findIndex(x => x.name == csh.val().color);
                console.log(index); <-- gives me the right index back
                console.log(data);
                console.log(data[index].population); <-- this gives me the right value back
                if (index === -1) {
                    data.push({
                        name: csh.val().color,
                        population: csh.val().color ? 1 : 1,
                        color: csh.val().color.toLowerCase(),
                        legendFontColor: '#7F7F7F',
                        legendFontSize: 15
                    });
                }else {
                    if(data && data[index]) {
                        data[index].push({
                            name: csh.val().color,
                            population: data[index].population + 1,
                            color: csh.val().color.toLowerCase(),
                            legendFontColor: '#7F7F7F',
                            legendFontSize: 15
                        })
                    }
                }

但是我在else语句中得到了一个错误:undefined不是这一行的函数:

data[index].push({

更新:

这是数组的样子:

    const data = [
    { name: "brown", population: 5, color: 'brown', legendFontColor: '#7F7F7F', legendFontSize: 15 },
{ name: "red", population: 5, color: 'brown', legendFontColor: '#7F7F7F', legendFontSize: 15 },
]

1 个答案:

答案 0 :(得分:1)

 let index = data.findIndex(x => x.name == csh.val().color);
                console.log(index); <-- gives me the right index back
                console.log(data);
                console.log(data[index].population); <-- this gives me the right value back
                if (index === -1) {
                    data.push({
                        name: csh.val().color,
                        population: csh.val().color ? 1 : 1,
                        color: csh.val().color.toLowerCase(),
                        legendFontColor: '#7F7F7F',
                        legendFontSize: 15
                    });
                }else {
                       data[index] = {
                            name: csh.val().color,
                            population: data[index].population + 1,
                            color: csh.val().color.toLowerCase(),
                            legendFontColor: '#7F7F7F',
                            legendFontSize: 15
                        }
                }