Ad

When Pushing Objects To Array, How To Not Push Same Object?

- 1 answer

I'm creating new array with objects checked in the checkbox. But when i submit again, there's a error "flattenChildren(...): Encountered two children with the same key, .$3. Child keys must be unique; when two children share a key, only the first child will be used." I want push only unique objects.

I`m using react

handleSubmit(){

    let students = []
    for(let idx in this.state.checked){
        if(this.state.checked[idx] ){
            students.push(this.state.allStudent[idx])
        }
    }
    console.log('students', students)
    this.setState({
        studentList: update(this.state.studentList, {$push: students})
    })

}
Ad

Answer

As you are using React, you should be able to safely use the ES6 Set Object, which lets you store unique values of any type. (https://devdocs.io/javascript/global_objects/set).

e.g.

handleSubmit(){

let students = []
for(let idx in this.state.checked){
    if(this.state.checked[idx] ){
        students.push(this.state.allStudent[idx])
    }
}

students = [...new Set(students)];

console.log('students', students)
this.setState({
    studentList: update(this.state.studentList, {$push: students})
})

}

Ad
source: stackoverflow.com
Ad