Eld3rt
@Eld3rt

Как избежать дублирования повторяющихся свойств и значений в объектах массива?

Есть массив объектов, данные которого к примеру, используются для рендеринга html элементов. В объектах имеются одинаковые повторяющиеся (между этими объектами) пары ключ-значение (свойства title и description), а также свойство с различающимися значениями (свойство value).

Можно ли как-то избежать дублирования повторяющихся пар в этих объектах, т.е. прописать их один раз (например в отдельном объекте и использовать референс на этот объект), а затем при переборе массива для рендеринга отобразить все элементы с прописанными значениями и в указанном количестве.

Имеются данные:

let arr1 = [
  {
    title: "Title",
    description: "Description",
    value: "Value1"
  },
  {
    title: "Title",
    description: "Description",
    value: "Value2"
  },
]


Необходимо что-то по типу:

// Свойства title и description выносим, чтобы избежать дублирования.

let obj1 = {
    title: "Title",
    description: "Description",
    // здесь по идее должно храниться свойство value, которое ссылается на соответствующее свойство объекта в массиве arr1
}

let arr1 = [
  {
    obj1: obj1,
    value: "Value1"
  },
  {
    obj1: obj1,
    value: "Value2"
  },
]


Чтобы в дальнейшем использовать в следующем HTML (использую SSG Astro):

{arr1.map(arr => (
    <h1>{arr.obj1.title}</h1>
    <p>{arr.obj1.description}</p>
    <span>{arr.obj1.value}</span>
))}
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 2
Alexandroppolus
@Alexandroppolus
кодир
эту странную хотелку можно сделать через прототипы
const commonData = {
    title: "Title",
    description: "Description",
};

const arr = [
    {value: 'Value1'},
    {value: 'Value2'}
].map((obj) => Object.setPrototypeOf(obj, commonData));

console.log(arr[0].value); // Value1
console.log(arr[0].title); // Title


но если твой массив пришел с бэка и был распарсен, то уже нет смысла мутить
Ответ написан
sharp97
@sharp97
не фонтан но брызги есть
Если я правильно понял суть вопроса ,просто добавь все значения в массив каждого ключа
let arr1 = 
  {
    title: [title1,title1,title3],
    description: [desc1,desc1,desc3],
    value: [val1,val1,val3]
 }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы