Tengo una lista de una matriz de objetos que contiene una matriz anidada de objetos así:
const mainList = [ { id:'001', category: 'A', content: [ { title: 'Apples', language: 'en' }, { title: '苹果', language: 'zh-cn' }, { title: '苹果HK', language: 'zh-hk' }, ], }, { id:'002', category: 'B', content: [ { title: 'Grapes', language: 'en' }, { title: '葡萄', language: 'zh-cn' }, { title: '葡萄HK', language: 'zh-hk' }, ], }, { id:'003', category: 'C', content: [ { title: 'Bananas', language: 'en' }, { title: '香蕉', language: 'zh-cn' }, { title: '香蕉HK', language: 'zh-hk' }, ] } ]Quiero mostrar esta lista usando lodash _sortBy, por su título en orden alfabético como este:
Apples, Bananas, Grapes
Mi acercamiento:
console.log(_sortBy(mainList.content.title)) Pero el resultado vuelve con undefined at index 0
¡Gracias por adelantado!
la forma en que usó sortBy es incorrecta, puede usar sortBy de esta manera:
console.log(_.sortBy(mainList, "content.title")); pero la lista no tiene content.title , por lo que debe especificar el índice de contenido que desea ordenar por content[0].title
por lo que la forma correcta de ordenar por título es así:
console.log(_.sortBy(mainList, "content[0].title"));Realmente no necesitas lowdash para hacer la clasificación:
const list = [{id:'001', category: 'A', content: [{title: 'Apples',language: 'en'}, {title: '苹果',language: 'zh-cn'}, {title: '苹果HK', language: 'zh-hk'}]}, {id:'002', category: 'B', content: [{title: 'Grapes',language: 'en'}, {title: '葡萄',language: 'zh-cn'}, {title: '葡萄HK',language: 'zh-hk'}]}, {id:'003', category: 'C', content: [{title: 'Bananas',language: 'en'}, {title: '香蕉',language: 'zh-cn'}, {title: '香蕉HK',language: 'zh-hk'}]} ]; const srtv=o=>o.content[0].title; console.log(list.sort((a,b)=>srtv(a).localeCompare(srtv(b))))