Javascript 将JSON集合中特定的、非重复的值推送到.each语句中

Javascript 将JSON集合中特定的、非重复的值推送到.each语句中,javascript,jquery,json,Javascript,Jquery,Json,我有一个每个语句,如下所示: $.each(data, function(i, value) { sublayers.push({ sql: "SELECT " + firstSel2 + ", cartodb_id, the_geom_webmercator FROM full_data_for_testing_deid_2 where " + firstSel2 + "='" + value.attri_1 + "'", ca

我有一个
每个
语句,如下所示:

$.each(data, function(i, value) {

        sublayers.push({
            sql: "SELECT " + firstSel2 + ", cartodb_id, the_geom_webmercator FROM full_data_for_testing_deid_2 where " + firstSel2 + "='" + value.attri_1 + "'",
            cartocss: "#full_data_for_testing_deid_2 {marker-fill:"+color_here+";marker-width:5;marker-line-width: 0.2;marker-line-color:#fff;marker-allow-overlap: true;}"
       });     
    });
在cartocss部分,这里有一个变量
color\u
。这是我需要替换的。这需要是来自如下对象的十六进制值:

var myColors = ["#364C57",
"#666DD6",
"#867EAD",
"#1A3D76",
"#7F787F",
"#35304C",
"#1D5772",
"#15446B",
"#7382C0",
"#484A48",
"#454252",
"#333C6F"];

我需要的是,each语句为循环通过的每个
提取其中一种颜色(从顶部开始),而不重复。假设循环的数量永远不会超过上面我的对象中的颜色。有没有一种方法可以确保给定语句的颜色不会重复?我可以从列表中随机选择一些内容,但这可能会导致重复。

似乎您只需要根据当前索引从数组中选择颜色:

var color_here = myColors[i];

不是吗?将它放在
子层之前。push()

可能像这样您想要的:

    var color_curr;
    var myColors = ["#364C57",
    "#666DD6",
    "#867EAD",
    "#1A3D76",
    "#7F787F",
    "#35304C",
    "#1D5772",
    "#15446B",
    "#7382C0",
    "#484A48",
    "#454252",
    "#333C6F"];
    $.each(data, function(i, value) {
    var color = myColors[i];
    if(color!=color_curr){
            sublayers.push({
                sql: "SELECT " + firstSel2 + ", cartodb_id, the_geom_webmercator FROM full_data_for_testing_deid_2 where " + firstSel2 + "='" + value.attri_1 + "'",
                cartocss: "#full_data_for_testing_deid_2 {marker-fill:"+color_here+";marker-width:5;marker-line-width: 0.2;marker-line-color:#fff;marker-allow-overlap: true;}"
           });  
    }
    color_curr=color;

});

这是一个非常简单的解决方案。谢谢@乔恩,你本可以在2分钟前接受的,那天我想要300次,为什么你不这么做:德索里。我欠你一个人情。