Tengo una gran variedad de objetos. Quiero encontrar, por ejemplo, nombres que comiencen con una letra específica y terminen con otra letra específica y devolver una lista de nombres que comiencen y terminen con ellos.

Probé algunas soluciones pero no obtuve respuesta.

Aquí uso una lista simple: y quiero una lista cuyo nombre comience con "A" y termine con "i":

myList = [{name: "Aji",family: "Ziansi"}, { name: "Alex", family: "ortega"}, {name:"Amandi",family: "Sedirini"}];

La salida debería ser así:

desiredLiset = [{name: "Aji",family: "Ziansi"}, {name:"Amandi",family: "Sedirini"}];

Cualquier solución sería apreciada.

respuesta

Puede usar .filter()para obtener una lista de los nombres que desea:

myList = [{name: "Aji",family: "Ziansi"}, { name: "Alex", family: "ortega"}, {name:"Amandi",family: "Sedirini"}];

let desiredLiset = myList.filter(function(n){
    return n.name.match(/^A.*i$/i) // Names that begin with 'A' and end with 'i'
});

console.log(desiredLiset)
// 0: Object { name: "Aji", family: "Ziansi" }
// ​1: Object { name: "Amandi", family: "Sedirini" }

Nosotros podemos usarArray.filter()

const myList = [{
  name: "Aji",
  family: "Ziansi"
}, {
  name: "Alex",
  family: "ortega"
}, {
  name: "Amandi",
  family: "Sedirini"
}];

const start = "A";
const end = "i";

const filtered = myList.filter(obj => {
  const name = obj.name;
  return name[0] === start && name[name.length - 1] === end;
});

console.log(filtered);

Prueba esto:

myList = [{name: "Aji",family: "Ziansi"}, { name: "Alex", family: "ortega"}, {name:"Amandi",family: "Sedirini"}];

const start='A'
const end='i'
const startEndRE = new RegExp(`^${start}.*${end}$`)
myList.filter(item=>(
    startEndRE.test(item.name)
))

// Result 
// [
//   { name: 'Aji', family: 'Ziansi' },
//   { name: 'Amandi', family: 'Sedirini' }
// ]