Tengo una matriz de objects duplicados.
Tengo que encontrar siempre el último duplicado y eliminarlo de la array .
En Chrome, uso findLastIndex para obtener el índice y eliminarlo. Lamentablemente, FireFox no es compatible con esa función.
¿Alguna otra idea de cómo obtener el último índice del objeto duplicate en la array , de manera simple?
(para encontrar mi object , uso el name: string , no tengo identificación, por eso necesito el índice.
Ya he intentado usar myArr.lastIndexOf(myArr.find((item) => item.name == itemName)); pero no funciona
Aquí hay un ejemplo de matriz:
[{ imgSource: "/sushi/test2.png" ingredients: "Nori, Cucumber, Rice, Cream cheese, Sesame, Unagi sauce" name: "sushi1" price: 133 weight: 120 }, { imgSource: "/sushi/test2.png" ingredients: "Nori, Cucumber, Rice, Cream cheese, Sesame, Unagi sauce" name: "sushi1" price: 133 weight: 120 }, { imgSource: "/sushi/test3.png" ingredients: "Rice, Cream cheese, Sesame" name: "sushi3" price: 150 weight: 100 } ]findLastIndex no es una función js, pero creo que lo que intentas hacer es algo como esto:
let arr = [ { imgSource: "/sushi/test2.png", ingredients: "Nori, Cucumber, Rice, Cream cheese, Sesame, Unagi sauce", name: "sushi1", price: 133, weight: 120, }, { imgSource: "/sushi/test2.png", ingredients: "Nori, Cucumber, Rice, Cream cheese, Sesame, Unagi sauce", name: "sushi1", price: 133, weight: 120, }, { imgSource: "/sushi/test3.png", ingredients: "Rice, Cream cheese, Sesame", name: "sushi3", price: 150, weight: 100, }, ]; let lastIndex = arr.lastIndexOf(arr.reverse().find(ele=>ele.name=="sushi1")) console.log(lastIndex) tenga en cuenta que utilicé la función reverse() para find() porque necesita la última.
nota adicional: estos objetos duplicados no son los mismos desde el punto de vista == o === , ya que los operadores de control de calidad de los objetos comprueban las referencias y no el valor real
Finalmente encontré una solución para mi respuesta, gracias a Mohamad ali ghorbani, logré encontrar la manera correcta de hacerlo.
Así es como obtuve mi último índice:
const nameArray = myCart.map((item) => item.name); const indexOfItem = nameArray.lastIndexOf(itemName); myCart.splice(indexOfItem, 1);No hay findLastIndex en JS
Puedes hacer un conjunto
let arr = [{ imgSource: "/sushi/test2.png", ingredients: "Nori, Cucumber, Rice, Cream cheese, Sesame, Unagi sauce", name: "sushi1", price: 133, weight: 120 }, { imgSource: "/sushi/test2.png", ingredients: "Nori, Cucumber, Rice, Cream cheese, Sesame, Unagi sauce", name: "sushi1", price: 133, weight: 120 }, { imgSource: "/sushi/test3.png", ingredients: "Rice, Cream cheese, Sesame", name: "sushi3", price: 150, weight: 100 } ] const mySet = new Set() arr.forEach(item => mySet.add(JSON.stringify(item))) const newArr = Array.from(mySet).map(entry => JSON.parse(entry)) console.log(newArr)