Получить значения из массива по порядку внутри для - PullRequest
0 голосов
/ 04 августа 2020

У меня есть этот массив в реакции

const pallete = ['#5931B5', '#7842F5', '#2EABE3', '#F2711C']

Я хочу создать функцию, которая будет возвращать первый шестнадцатеричный, а затем второй ...

getColor(){
   //What code should I have here?
   return COLOR
}

Это мой основная функция

updateArray(data){
        const dataAux = data;
        for(var key in dataAux.datasets) {
            if (typeof dataAux.datasets[key].backgroundColor == 'undefined'){
               //I want here to take the values from the first array (pallete) and give dataAux.datasets[key]... the first color, then when he reads it again the second one...

                for(var i in pallete){
                    dataAux.datasets[key].backgroundColor = getColor(color????);
                }

            }
        }
    }

Данные const имеют массив объектов примерно так:

{labels: [1, 2, 3], datasets: [{label: 'Undefined', pointStyle: 'line', borderColor: pallete[0],borderWidth: 3,yAxisID: "bar-y-axis",data: [1, 2, 3]},{label: 'Undefined',backgroundColor: pallete[1],pointStyle: 'line',borderColor: pallete[1],borderWidth: 3,yAxisID: "bar-y-axis",data: [2, 4, 6]}]}

Ответы [ 3 ]

1 голос
/ 04 августа 2020

Нет необходимости объявлять другую функцию для получения цвета. Вы можете использовать следующий код, чтобы получить цвет и установить его в качестве фона.

getColor(index){
   //What code should I have here?
   return pallete[index];
}

updateArray(data){
            const dataAux = data;
            var i=0;
            for(var key in dataAux.datasets) {
                if (typeof dataAux.datasets[key].backgroundColor == 'undefined'){
                   //I want here to take the values from the first array (pallete) and give dataAux.datasets[key]... the first color, then when he reads it again the second one...
    
                   
                        dataAux.datasets[key].backgroundColor = getColor(i%4);
                       i++;
                    
    
                }
            }
        }
0 голосов
/ 04 августа 2020

, если вы хотите получать каждый цвет при каждом вызове функции, вы можете использовать функциональность функции генератора, как показано ниже, чтобы получить каждый цвет на каждой итерации вашего l oop:

const pallete = ['#5931B5', '#7842F5', '#2EABE3', '#F2711C']

function* getColor(arr) {
  for (let i = 0; i < arr.length ; i++) {
    yield arr[i]
  }
}

const iterator = getColor(pallete)

console.log(iterator.next()) // { value:  '#5931B5', done: false }
console.log(iterator.next()) // { value:  '#7842F5', done: false }
console.log(iterator.next()) // { value:  '#2EABE3', done: false }
console.log(iterator.next()) // { value:  '#F2711C', done: false }
console.log(iterator.next()) // { value:  undefined, done: true }

в вашем случае , вы можете вызвать значение iterator.next() внутри вашего l oop, пока оно не достигнет условия undefined, а затем вам нужно будет разбить l oop!

0 голосов
/ 04 августа 2020

Это может быть излишним, но вы можете создать объект с «памятью», чтобы предоставить вам цвета. 1007 *. Я уверен, что вокруг этого есть более современный / хитрый go, суть в том, что для него есть объект вместо примитивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...