Así que tengo esta matriz de objetos:
[ { type: 'month', value: '9' }, { type: 'day', value: '11' }, { type: 'year', value: '2021' }, { type: 'hour', value: '7' }, { type: 'minute', value: '35' }, { type: 'second', value: '07' } ] Necesito una forma de extraer el valor 9 usando el término de búsqueda month . Seguro que podría usar:
var myObjects = [ { type: 'month', value: '9' }, { type: 'day', value: '11' }, { type: 'year', value: '2021' }, { type: 'hour', value: '7' }, { type: 'minute', value: '35' }, { type: 'second', value: '07' } ] ; console.log(myObjects[0]["value"]); El problema es que esto realmente no está usando un término de búsqueda, y estoy en una situación en la que el formato de fecha puede cambiar de en_GB a en_US y otros formatos de hora complicados que harán que el month cambie de posición a [1] , [2] o [3] .
Usando Array#find :
const data = [ { type: 'month', value: '9' }, { type: 'day', value: '11' }, { type: 'year', value: '2021' }, { type: 'hour', value: '7' }, { type: 'minute', value: '35' }, { type: 'second', value: '07' } ]; const { value } = data.find(({ type }) => type === 'month') || {}; console.log(value);Y probablemente será conveniente convertir la matriz de objetos en un solo objeto. Se puede hacer de esta manera:
var arr = [ { type: 'month', value: '9' }, { type: 'day', value: '11' }, { type: 'year', value: '2021'}, { type: 'hour', value: '7' }, { type: 'minute', value: '35' }, { type: 'second', value: '07' } ] const arr_to_obj = arr => { var obj = {}; for (var a of arr) obj[a.type] = a.value; return obj; } var date = arr_to_obj(arr); // { month:9, day:11, year:2021, ... } console.log(date.month); // 9 console.log(date.day); // 11 console.log(date.year); // 2021 console.log(date.hour); // 7 ...etcUna variante más:
var arr = [{ type: 'month', value: '9' }, { type: 'day', value: '11' }, { type: 'year', value: '2021' }, { type: 'hour', value: '7' }, { type: 'minute', value: '35' }, { type: 'second', value: '07' }]; // var month = arr.filter(x => x.type == 'month')[0].value; // less efficient var month = arr.find(x => x.type == 'month').value; // more efficient console.log(month) // 9