Замена значения ключа другим свойством в массиве объектов

объединение массива с объектом и возврат массива со всеми свойствами с массивом значения объекта или нуля

let object = {
  keys: {
    test1: {label: "Test_1"},
    test2: {label: "Test_2"},
    test3: {label: "Test_3"}
  }
}

let data = [{test1: "1", test2: "2", default:"123134" }, {test1: "1", test2: "2", default:"123134"}, {test1: "1", test3: "3"}, {test3: "3"}]

Я ожидаю следующий массив объектов

let expectedArray = [{Test_1: "1", Test_2: "2", Test_3: null ,default:"123134" }, {Test_1: "1", Test_2: "2", Test_3: null,  default:"123134"}, {Test_1: "1", Test_3: "3", Test_2:null }, {Test_3: "3", Test_1: null, Test_2: null}]

Пробовал ниже фрагмент

let res = data.map(o => {
  let obj = {}
  let c = Object.keys(o).forEach(aa => {
      obj[object.keys[aa].label] = o[aa]
  })
  return obj
})

Любая помощь приветствуется

что не работает?

Nina Scholz 27.05.2019 17:16

я не понял

Learner 27.05.2019 17:17

Он имеет в виду, что вы пробовали до сих пор и где вы нанесли удар?

Maheer Ali 27.05.2019 17:17
{Test 1: "1", Test 2: "2", Test 3: null ,default:"123134" } Недопустимый объект
Charlie 27.05.2019 17:19

обновил ключ

Learner 27.05.2019 17:22

обновлен с фрагментом попробовал

Learner 27.05.2019 17:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
6
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете заменить существующий ключ объекта и перестроить новые объекты.

var object = { keys: { test1: { label: "Test 1" }, test2: { label: "Test 2" }, test3: { label: "Test 3" } } },
    data = [{ test1: "1", test2: "2", default: "123134" }, { test1: "1", test2: "2", default: "123134" }, { test1: "1", test3: "3" }, { test3: "3" }],
    templates = Object.values(object.keys).map(({ label }) => ({ [label]: null })),
    result = data.map(o => Object.assign(
        {},
        ...templates,
        ...Object
            .entries(o)
            .map(([k, v]) => ({ [k in object.keys ? object.keys[k].label : k]: v }))
    ));

console.info(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

мне нужно получить все ключи, ожидаемый массив каждого объекта состоит из каждого ключа. Можете ли вы проверить ожидаемые данные в вопросе

Learner 27.05.2019 17:35

я пытаюсь обновить структуру другим способом, не могли бы вы помочь мне с этим stackoverflow.com/questions/56339879/…

Learner 28.05.2019 12:57

Другие вопросы по теме