从颜色渐变数组构造对象

时间:2015-06-12 05:13:05

标签: javascript arrays loops

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

库要求将渐变作为对象传递为以下格式:

QVBoxLayout

我已经构建了一系列渐变:

QListView

每次调用函数时,我都存储一个索引值,并需要检索数组中相应的渐变。如何从[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)']
  ]
]

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

gradients

3 个答案:

答案 0 :(得分:1)

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

您可以像这样编写循环:

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

答案 1 :(得分:0)

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

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);
       }
    }
}

希望这有帮助

答案 2 :(得分:0)

这是你所期望的吗?

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)']