Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

175
Visualizações
filtre un objeto javascript para devolver solo pares de valores clave basados en otro objeto

Tengo una matriz que se ve así, esta matriz se llama Columnas

 [ { "key":"event_tag", "value":"Event tag", "order":2, "filter":{ "value":[], "type":"options", "options":["refresh","done_sent","send","level","ack","create"] } }, { "key":"created_timestamp", "order":0, "value":"Created timestamp" }, { "key":"workflow_tag", "value":"Workflow tag", "order":1, "filter":{ "value":[], "type":"options", "options":[] } } ]

Tengo otra matriz que se ve así, se llama rowData

 [ { "created_timestamp":"2022-04 04T16:21:44.327926Z", "created_by":"xxxxxxxxx", "workflow_tag":"xxxxx", "event_tag":"refresh", "user_email":"xxxxx", "counterparty":"GAMMA", "success":true, "chat_message_id":"xxxxx", "chat_stream_id":"xxxxx", "chat_platform":"xxxxx", "routing_rule":null,"notification":13600 }]

Lo que quiero hacer en la segunda matriz es eliminar todos los atributos del atributo donde la clave no coincide con una clave: valor de la primera matriz,

Entonces, en la primera matriz, cada objeto tiene un atributo "key" , si el valor de ese atributo clave existe en el segundo objeto de la matriz, quiero conservarlo, si no, quiero eliminarlo, así que en base a los primeros objetos de la matriz. la matriz final para la segunda matriz debería verse así,

 [ { "created_timestamp":"2022-04 04T16:21:44.327926Z", "workflow_tag":"xxxxx", "event_tag":"refresh", }]

No puedo averiguar cómo hacer esto, ¿debería hacer algún tipo de mapa en la matriz de datos de fila y hacer algún tipo de condición para verificar que la clave existe en la matriz de columnas y, de ser así, cómo?

 const newRowData = rowData.map((obj) => { if(Object.keys(obj).includes(columns.key)) { return obj[key]; } });

Para ser honesto, estoy bastante perdido, todo lo que quiero es una nueva matriz de objetos y que esos objetos solo incluyan las claves que coinciden con el atributo clave de la matriz de columnas.

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Primero, las claves de creación deben usarse desde las columnas usando el mapa. Usando map en rowData y Object.assign .

 const cols = [ { key: "event_tag", value: "Event tag", order: 2, filter: { value: [], type: "options", options: ["refresh", "done_sent", "send", "level", "ack", "create"], }, }, { key: "created_timestamp", order: 0, value: "Created timestamp", }, { key: "workflow_tag", value: "Workflow tag", order: 1, filter: { value: [], type: "options", options: [], }, }, ]; const rowData = [ { created_timestamp: "2022-04 04T16:21:44.327926Z", created_by: "xxxxxxxxx", workflow_tag: "xxxxx", event_tag: "refresh", user_email: "xxxxx", counterparty: "GAMMA", success: true, chat_message_id: "xxxxx", chat_stream_id: "xxxxx", chat_platform: "xxxxx", routing_rule: null, notification: 13600, }, ]; const keys = cols.map(({ key }) => key); const output = rowData.map((item) => Object.assign( {}, ...keys.map((key) => ({ [key]: item[key] })) ) ); console.log(output);

about 4 years ago · Santiago Trujillo Relatório

0

esto funcionará

 const data = [ { "key":"event_tag", "value":"Event tag", "order":2, "filter":{ "value":[], "type":"options", "options":["refresh","done_sent","send","level","ack","create"] } }, { "key":"created_timestamp", "order":0, "value":"Created timestamp" }, { "key":"workflow_tag", "value":"Workflow tag", "order":1, "filter":{ "value":[], "type":"options", "options":[] } } ] const rowData = [ { "created_timestamp":"2022-04 04T16:21:44.327926Z", "created_by":"xxxxxxxxx", "workflow_tag":"xxxxx", "event_tag":"refresh", "user_email":"xxxxx", "counterparty":"GAMMA", "success":true, "chat_message_id":"xxxxx", "chat_stream_id":"xxxxx", "chat_platform":"xxxxx", "routing_rule":null,"notification":13600 }] const extractData = (row) => { const keys = data.map(d => d.key) return row.map(r => Object.fromEntries(Object.entries(r).filter(([k, v]) => keys.includes(k)))) } console.log(extractData(rowData))

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda