Ошибка типа массива React: Не удается прочитать свойства неопределенного (чтение «длина»)

#javascript #arrays #reactjs #chart.js

Вопрос:

Я использую chart.js чтобы создать диаграмму. Объявите data: minsu , импортировав Array имя minsu в data .

И в соответствии со значением minsu green if greater than 100 создается условный оператор с «желтым, если меньше 100» для оператора.

Но я получаю ошибку с for (let i =0 i lt; dataset.data.length; i ) синтаксисом. TypeError: Cannot read properties of undefined (reading 'length')

Если я изменю код в условном операторе for, он будет отображаться правильно, но я не знаю, как изменить код.

 let minsu = ProductDetail amp;amp; ProductDetail.materialsInfo.map(array =gt; array.chartPercentage)  console.log(minsu); // Array [100, 50, 20, 60, 120]     let chartColors = {  yellow: 'rgb(244, 208, 104)',  green: '#4CC26F',  gray: '#EBEBEB'  };    const data = {  datasets: [  {  backgroundColor: [],  data: minsu,  },   ],  };    console.log(data); // Array [100, 50, 20, 60, 120]    // The reference value is 100 .  let colorChangeValue = 100;  let dataset = data.datasets[0];    for (let i = 0; i lt; dataset.data.length; i  ) {  if (dataset.data[i] gt; colorChangeValue) {  dataset.backgroundColor[i] = chartColors.green;  if (dataset.data[i] lt; 100) {  dataset.backgroundColor[i] = chartColors.gray;  }  }  if (dataset.data[i] lt; colorChangeValue) {  dataset.backgroundColor[i] = chartColors.yellow;  }  }   

Комментарии:

1. Мне кажется, что проблема в том, что вы уже определили набор данных как НЕ являющийся массивом, когда выбрали первый элемент. Другими словами, let dataset = data.datasets[0]; возвращает не массив, а один объект, поэтому dataset.data.length не определен. Кроме того, вам захочется исправить остальные data dataset ссылки и в вашем цикле, чтобы смотреть на правильные вещи. Честно говоря, я бы даже переименовал const data во что-нибудь другое, чтобы вы не путали сами себя.