#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
во что-нибудь другое, чтобы вы не путали сами себя.