Soy un novato en angular, me enfrento a un problema si alguien me ayuda, entonces será apreciable. Tengo una variedad de objetos como los siguientes.
signals = [{ 'signalID': '123' },{ 'signalID': '233' },{ 'signalID': '333' },{ 'signalID': '433' },{ 'signalID': '533' },{ 'signalID': '633' },{ 'signalID': '733' }]Tengo un objeto como el siguiente
signalOrder = { 333:1, 433:2, 533:3 }Quiero agregar una propiedad a la matriz de señales como orderNo si SignalId coincide con el objeto SignalOrder; de lo contrario, orderNo debería ser nulo. Resultado esperado :
signals = [{ 'signalID': '123', 'orderNo':null },{ 'signalID': '233', 'orderNo':null },{ 'signalID': '333', 'orderNo':1 },{ 'signalID': '433', 'orderNo':2 },{ 'signalID': '533', 'orderNo':3 },{ 'signalID': '633', 'orderNo':null },{ 'signalID': '733', 'orderNo':null }]Espero que funcione con la función de mapa de javascript, pero no sé cómo usarlo.
Puedes hacerlo como:
let signals = [{'signalID': '123'},{'signalID': '233'},{'signalID': '333'},{'signalID': '433'},{'signalID': '533'},{'signalID': '633'},{'signalID': '733'}]; let signalOrder = {333:1,433:2,533:3} let mapped = signals.map(x=>{ return { signalID:x.signalID, orderNo:signalOrder[x.signalID] } }) console.log(mapped)Puede usar Array.map() para crear el resultado que desea. Para cada elemento de señal, buscaremos el número de pedido en el objeto orderNo . Si no está presente, lo estableceremos en nulo.
const signals = [{ 'signalID': '123' },{ 'signalID': '233' },{ 'signalID': '333' },{ 'signalID': '433' },{ 'signalID': '533' },{ 'signalID': '633' },{ 'signalID': '733' }]; const signalOrder = { 333:1, 433:2, 533:3 } const result = signals.map(({signalID}) => ({ signalID, orderNo: signalOrder[signalID] || null })) console.log('Result:', result) .as-console-wrapper { max-height: 100% !important; top: 0; }Esto no tiene nada que ver con Angular o Typescript. Podría resolverse con los métodos Vanilla JS Array.
Aquí hay un método que usa Array#map , sintaxis extendida , prueba falsa usando OR || . Intentar signalOrder[signal.signalID] devolvería undefined para propiedades no disponibles, lo cual es falso. En estos casos, se usaría null .
Prueba lo siguiente
const signals = [{ 'signalID': '123' },{ 'signalID': '233' },{ 'signalID': '333' },{ 'signalID': '433' },{ 'signalID': '533' },{ 'signalID': '633' },{ 'signalID': '733' }] const signalOrder = { 333:1, 433:2, 533:3 } const result = signals.map(signal => ({ ...signal, orderNo: signalOrder[signal.signalID] || null })); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }