Tengo un archivo JSON con datos dentro de un usuario
[ { "_id": "62bd5fba34a8f1c90303055c", "index": 0, "email": "mcdonaldholden@xerex.com", "nameList": [ { "id": 0, "name": "Wendi Mooney" }, { "id": 2, "name": "Holloway Whitehead" } ] }, { "_id": "62bd5fbac3e5a4fca5e85e81", "index": 1, "nameList": [ { "id": 0, "name": "Janine Barrett" }, { "id": 1, "name": "Odonnell Savage" }, { "id": 2, "name": "Patty Owen" } ] }, { "_id": "62bd5fbaf8f417d849c135db", "index": 2, "email": "pattyowen@xerex.com", "nameList": [ { "id": 0, "name": "Earline Goff" }, { "id": 1, "name": "Glenna Lawrence" }, { "id": 7, "name": "Bettye Sawyer" } ]
Tuve que ordenar a cada usuario por: si el usuario tiene más de dos nombres si las identificaciones de usuario son consecutivas y si las identificaciones de usuario son números
Logré ordenar a los usuarios por más de dos nombres y si las identificaciones son consecutivas
userData.filter(({nameList}) => nameList.length > 2 && !nameList.some(({id}, index, array) => index && array[index - 1].id !== id - 1) );
En el caso de que un objeto tenga una identificación como número, no debería devolver los objetos. ¿Cómo puedo implementar eso en mi código?
Se espera que la salida sean todas las matrices que cumplen con el filtro y algunos () criterios. Que es si los objetos tienen más de 2 nombres, sus identificaciones son consecutivas y las identificaciones deben ser un número.
Si desea verificar si la id
es del tipo número:
(typeof id == "number")
Para comprobar si se puede convertir a un número
(id == parseInt(id, 10))
El código completo entonces (estabas cerca):
var userData = get_data(); userData = userData.filter(function(item) { return item.nameList.length > 2 && item.nameList.every(function(item, index, arr) { return parseInt(item.id) == item.id && (index == 0 || item.id - arr[index - 1].id == 1) }) }) console.log(userData); function get_data() { return [{ "_id": "62bd5fba34a8f1c90303055c", "index": 0, "email": "mcdonaldholden@xerex.com", "nameList": [{ "id": 0, "name": "Wendi Mooney" }, { "id": 2, "name": "Holloway Whitehead" } ] }, { "_id": "62bd5fbac3e5a4fca5e85e81", "index": 1, "nameList": [{ "id": 0, "name": "Janine Barrett" }, { "id": 1, "name": "Odonnell Savage" }, { "id": 2, "name": "Patty Owen" } ] }, { "_id": "62bd5fbaf8f417d849c135db", "index": 2, "email": "pattyowen@xerex.com", "nameList": [{ "id": 0, "name": "Earline Goff" }, { "id": 1, "name": "Glenna Lawrence" }, { "id": 7, "name": "Bettye Sawyer" } ] } ]; }
.as-console-wrapper { max-height: 100% !important }