Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2023, 13:30
Аспирант
Отправить личное сообщение для Aidec Посмотреть профиль Найти все сообщения от Aidec
 
Регистрация: 07.12.2022
Сообщений: 88

Помогите с массивом объектов, нужно из двух создать 1
У меня есть два массива такого плана

Mas1 = [{name: "Anton", age: "20"}, {name: "Artem", age: "23"}, {name: "Rafik", age: "32"}, {name: "Andrey", age: "30"};
 
Mas2= [{name: "Anton", status: "Yes"}, {name: "Artem", status: "Yes"}, {name: "Rafik", status: "No"}];


нужно создать третий массив, чтобы объединил их по name и получился массив такого плана -

Mas3= [{name: "Anton", age: "20", status: "Yes"}, {name: "Artem", age: "23", status: "Yes"}, {name: "Rafik", age: "32", status: "No"}, {name: "Andrey", age: "30"}];




Есть у кого-нибудь варианты решения?

Последний раз редактировалось Aidec, 01.05.2023 в 15:38.
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2023, 15:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Aidec,
а можно с нормальными кавычками?
Ответить с цитированием
  #3 (permalink)  
Старый 01.05.2023, 15:38
Аспирант
Отправить личное сообщение для Aidec Посмотреть профиль Найти все сообщения от Aidec
 
Регистрация: 07.12.2022
Сообщений: 88

Исправил)
Ответить с цитированием
  #4 (permalink)  
Старый 01.05.2023, 16:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Aidec,
<body>
    <pre>
<script>
const Mas1 =[{name: "Anton", age: "20"}, {name: "Artem", age: "23"}, {name: "Rafik", age: "32"}, {name: "Andrey", age: "30"}];
const Mas2 =[{name: "Anton", status: "Yes"}, {name: "Artem", status: "Yes"}, {name: "Rafik", status: "No"}];

const createArr = (...arg) => {
  const objName = {};
  return arg.flat().reduce((ar, el)=>
    {
      let name = el.name;
      let obj = objName[name];
      if(!obj) ar.push(objName[name] = {...el});
      else Object.assign(obj, el);
      return ar;
    }, []
  )
};
const Mas3 = createArr(Mas1, Mas2);
document.body.append(JSON.stringify(Mas3))
</script></pre>
</body>

Последний раз редактировалось рони, 01.05.2023 в 20:55. Причина: [].concat(...arg) заменил arg.flat()
Ответить с цитированием
  #5 (permalink)  
Старый 01.05.2023, 18:43
Аспирант
Отправить личное сообщение для Aidec Посмотреть профиль Найти все сообщения от Aidec
 
Регистрация: 07.12.2022
Сообщений: 88

Спасибо
Ответить с цитированием
  #6 (permalink)  
Старый 01.05.2023, 21:23
Аспирант
Отправить личное сообщение для Aidec Посмотреть профиль Найти все сообщения от Aidec
 
Регистрация: 07.12.2022
Сообщений: 88

А можешь подсказать как решить такую проблему

<script>
var electrical =[{name: "Anton", age: "20"}, {name: "Artem", age: "#23"}, {name: "Rafik", age: "32"}, {name: "Andrey", age: "30"}];
var personal =[{name: "Anton", status: "7^W#Yes"}, {name: "Artem", status: "#Yes"}, {name: "Rafik", status: "hghg#No"}];

var createArr = (...arg) => {
  var objName = {};
  return [].concat(...arg).reduce((ar, el)=>
    {
      let name = el.name; 
      let obj = objName[name];
      if(!obj) {objName[name] = {...el}; ar.push(objName[name])}
      else Object.assign(obj, el);
      return ar;
    }, []
  )
};
var arr = createArr(electrical, personal);
console.log(arr);


arr.forEach(function(element) {
    if (element.hasOwnProperty("status")) {
    element.status = (element.status).split('#')[1];
    }; 
    if (element.hasOwnProperty("age")) {
    element.age = (element.age).split('#')[1];
    }; 
});


</script>


получается проблема в том что там где # нет, мне выдает undefined, а как сделать так что бы у меня показывал место undefined тот тект который там указан без #
Например вот так-

(4) [{…}, {…}, {…}, {…}]
0: {name: 'Anton', age: '20', status: 'Yes'}
1: {name: 'Artem', age: '23', status: 'Yes'}
2: {name: 'Rafik', age: '32', status: 'No'}
3: {name: 'Andrey', age: '30'}
length: 4


а так на данный момент -

(4) [{…}, {…}, {…}, {…}]
0: {name: 'Anton', age: undefined, status: 'Yes'}
1: {name: 'Artem', age: '23', status: 'Yes'}
2: {name: 'Rafik', age: undefined, status: 'No'}
3: {name: 'Andrey', age: undefined}
length: 4

Последний раз редактировалось Aidec, 01.05.2023 в 22:20.
Ответить с цитированием
  #7 (permalink)  
Старый 01.05.2023, 22:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Aidec,
не копируйте сообщения целиком.
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #8 (permalink)  
Старый 01.05.2023, 22:08
Аспирант
Отправить личное сообщение для Aidec Посмотреть профиль Найти все сообщения от Aidec
 
Регистрация: 07.12.2022
Сообщений: 88

Хорошо, отредактировал.
Надеюсь вы поняли мою проблему и возможно знаете как она решается?)
Ответить с цитированием
  #9 (permalink)  
Старый 01.05.2023, 22:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Aidec,
arr.forEach(function(element) {
            if (element.hasOwnProperty("status")) {
                element.status = (element.status).split('#')[1] || element.status;
            };
            if (element.hasOwnProperty("age")) {
                element.age = +(element.age).split('#')[1] || +element.age;
            };
        });
Ответить с цитированием
  #10 (permalink)  
Старый 01.05.2023, 22:40
Аспирант
Отправить личное сообщение для Aidec Посмотреть профиль Найти все сообщения от Aidec
 
Регистрация: 07.12.2022
Сообщений: 88

спасибо, помогло
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с массивом пожалуйста cOAPerator Общие вопросы Javascript 5 14.02.2015 13:09
Как найти точки соприкосновения двух объектов в RaphaelJS Fatalityap Библиотеки/Тулкиты/Фреймворки 3 03.08.2012 16:33
Помогите создать тройное select меню JuriySOFT Элементы интерфейса 12 14.06.2010 14:33
нужно создать много копий div ASM29A Элементы интерфейса 3 27.03.2010 20:22
Помогите нужно узнать сылку на файл находящийся на компе... Lumy:) Общие вопросы Javascript 2 03.08.2009 12:03