从颜色渐变数组构造对象

Constructing an object from an array of color gradients

本文关键字:对象 数组 颜色 渐变      更新时间:2023-09-26

我有一个梯度数组,每次调用函数时,我都会尝试将其传递给图表库。

该库要求渐变作为对象以以下格式传入:

[0, 'rgba(73,115,214,.15)'],
[1, 'rgba(73,115,214,.07)']

我构建了一个渐变数组,如下所示:

var gradients = [
  [
    ['rgba(73,115,214,.15)'],
    ['rgba(148,196,168,.1)']        
  ],
  [
    ['rgba(73,115,214,.07)'],
    ['rgba(41,189,102,.12)']
  ]
]

每次调用函数时,我都会存储一个索引值,并且需要在数组中检索相应的梯度。如何从gradients中检索特定的索引值并将其构造为必要的格式?

var index = -1;
function setData() {
   index = index + 1;
   //I Need a gradient!
}

例如,如果索引为 2,我想返回:

[0, 'rgba(73,115,214,.07)'],
[1, 'rgba(41,189,102,.12)']

请检查这个小提琴的代码:http://jsfiddle.net/qp6kL5ms/1/

你可以像这样编写循环:

function setData() {
   index = index + 1;
   var resultantGradient = [];
   gradients[index].forEach(function(gradient, index) {
      resultantGradient.push([index, gradient]);
   });
   return resultantGradient;
}

这是你需要的吗?如果要准备硬编码数据,请执行此操作。

var gradients = {
   "0" : "['rgba(73,115,214,.15)']",
   "1" : "['rgba(148,196,168,.1)']",
   "2" : "['rgba(73,115,214,.07)']",
   "3" : "['rgba(41,189,102,.12)']"
}

在传递它时,您可以通过以下方式准备它:

var globalArray = [];
for( var grad in gradients ) {
  var obj = [];
  var val = grad+","+gradients[grad];
  obj.push(val);
  globalArray.push(obj);
}

现在对于您提到的索引内容,您可以像这样修改函数。

var globalArray = [];
// in your case you have show index as 2
function setData( index ){
   for( var grad in gradients ) {
       if ( grad < index ) {
         var obj = [];
         var val = grad+","+gradients[grad];
         obj.push(val);
         globalArray.push(obj);
       }
    }
}

希望这有帮助

这是你所期望的吗?

var index = -1;
function setData() {
    var result = [];
    index = index + 1;
    //I Need a gradient!
    gradients[index].forEach(function(element, key) {
        result[key] = [key, element[0]];
    });
    console.log(result);
    return result;
}

顺便说一下,数组索引从 0 开始。所以我希望如果 index==1,它将返回:

[0, 'rgba(73,115,214,.07)'],
[1, 'rgba(41,189,102,.12)']