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次,为什么你不这么做:德索里。我欠你一个人情。