Estoy experimentando un comportamiento inesperado de la función de inserción. El problema está en la última línea de código citada a continuación.
export enum non_searchFieldsNames { language = 'language', categories = 'categories', subtitle = 'subtitle', publishedDate = 'publishedDate', id = 'id', } enum columnsEnum { title, authors, language, categories, subtitle, publishedDate, } function toArray(obj: header | contentCategories | sourceFields) { return Object.entries(obj) .sort((a, b) => { return +a - +b; }) .map(item => item[1]); } let sourceFieldsObject: sourceFields = { [columnsEnum.title]: searchFieldsNames.title, [columnsEnum.authors]: searchFieldsNames.authors, [columnsEnum.language]: non_searchFieldsNames.language, [columnsEnum.categories]: non_searchFieldsNames.categories, [columnsEnum.subtitle]: non_searchFieldsNames.subtitle, [columnsEnum.publishedDate]: non_searchFieldsNames.publishedDate, }; const sourceFieldsArray = toArray(sourceFieldsObject).push(non_searchFieldsNames.id);El problema está en la última línea de código. El valor que recibo aquí es 7. Cuando lo simplifico así
const sourceFieldsArray = toArray(sourceFieldsObject)Recibo una matriz (sin embargo, sin el valor que intento agregar, por supuesto).
Cuando divido la lógica
const sourceFieldsArray = (toArray(sourceFieldsObject)); sourceFieldsArray.push(non_searchFieldsNames.id);Obtuve lo que quería. De todos modos, me gustaría tenerlo como una sola línea. Entonces, ¿cuál es mi error? he probado tambien
const sourceFieldsArray (toArray(sourceFieldsObject)).push(non_searchFieldsNames.id)Pero no ayuda.
push modifica la matriz principal directamente y no devuelve una nueva matriz como esperaba, sino el recuento de elementos en esa matriz.
Puede consultar la demostración a continuación para ver el valor devuelto de push
const array = [1,1,1] //3 items const count = array.push(1) //1 more item console.log(count) //total is 4 itemsSi desea tener una sola línea, puede probar el enfoque de clonación con el operador de extensión
const sourceFieldsArray = [...toArray(sourceFieldsObject), non_searchFieldsNames.id]Tenga en cuenta que este enfoque significa que está creando una nueva matriz por completo, por lo que debe tener en cuenta algunas situaciones de rendimiento con una gran matriz.