Как передать значение массива в другое значение массива объекта JavaScript - PullRequest
0 голосов
/ 31 октября 2018

У меня такой ответ на данные

{
"data": {
  "product": {
    "colors": ["#3498db", "#00ccff"],
    "items": [
     {
       "label": "Phone",
       "value": "23.00"
     },
     {
       "label": "Notebook",
       "value": "3.00"
     }
    ]
   }
 }
}

и тогда я хочу нажать цвета внутри предметов

ожидается: элементы имеют три (3) переменных, каждый из которых имеет индекс

items: [
 {
  label: phone,
  value: 23.00,
  color: #3498db
 }
]

Я пытаюсь использовать push и concat, но я получаю сообщение об ошибке "Не удается прочитать свойство 'данные' из неопределенного"

вот мой код

generaliseData(dashboardC) {
  let genData = Object.assign({}, dashboardC)
    if (genData.product.items.length > 0) {
      for (let i of genData.product.items) {
        i.value = parseInt(i.value)
          for (let j of genData.product.colors) {
            i = i.push(j)
          }
       }
      console.log(genData)
    }
 }

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Вы можете использовать простой цикл forEach() для этого результата:

var data = {
  "product": {
    "colors": ["#3498db", "#00ccff"],
    "items": [{
        "label": "Phone",
        "value": "23.00"
      },
      {
        "label": "Notebook",
        "value": "3.00"
      }
    ]
  }
};
data.product.items.forEach((item, index) => item.color = data.product.colors[index]);
console.log(data);
0 голосов
/ 31 октября 2018

Вы можете использовать map , чтобы перебрать ваш список, ожидая, что длина цветов будет равна длине элемента

const response = {
"data": {
  "product": {
    "colors": ["#3498db", "#00ccff"],
    "items": [
     {
       "label": "Phone",
       "value": "23.00"
     },
     {
       "label": "Notebook",
       "value": "3.00"
     }
    ]
   }
 }
};
function addColorToItem(response) {
  const product = response.data.product;
  const colors = product.colors;
  const items = product.items;
  
  return items.map((item, index) => {
    item.color = colors[index];
    return item;
  })
}

console.log(addColorToItem(response));
0 голосов
/ 31 октября 2018

Вы можете перебирать элементы и назначать цвет.

var response = { data: { product: { colors: ["#3498db", "#00ccff"], items: [{ label: "Phone", value: "23.00" }, { label: "Notebook", value: "3.00" }] } } },
    temp = response.data.product;

temp.items.forEach((o, i) => o.color = temp.colors[i]);

console.log(response);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...