我正在尝试从我的if中的时间线数组中将event.feature.getProperty(“乡镇”)与timeline.townshipname进行比较。现在检查一个是可以的,但是我有一个完整的专栏我想检查一下。做这件事最好的方法是什么?
//Load Timelines
var timeline = [];
jQuery.getJSON(timelines, function(data) {
var entry = data.feed.entry;
jQuery(entry).each(function(){
var townshipname = this.gsx$township.$t;
var timelinename = this.gsx$timeline.$t;
var combined = {townshipname, timelinename};
timeline.push(combined);
});
});
// Output from timeline looks like
// 0: {townshipname: "West Quincy", timelinename: "Ready for drops"}
// 1: {townshipname: "Woodgate", timelinename: "Ready"}
//Add infowindow to identify townships
township_layer.addListener('click', function(event) {
if (event.feature.getProperty('township') == timeline[0].townshipname){
var timepush = timeline[0].timelinename
} else {
var timepush = 'No Timeline Entered'
}发布于 2019-04-08 21:26:44
您可以从对象的timeline数组中创建乡镇名称数组,以便比较是否在时间线中找到特定的乡镇。
这可以通过以下方式实现:
Array.prototype.map()迭代对象的timeline数组,并返回所有townshipname的列表Array.prototype.indexOf()检查给定乡镇是否存在于数组中示例代码如下:
// Generate an array of townships extract from timeline
var townships = timeline.map(function(item) {
return item.townshipname;
});
// Attempt to search a given township in your generated array
var townshipIndex = townships.indexOf(event.feature.getProperty('township'));
if (townshipIndex !== -1) {
var timepush = timeline[townshipIndex].timelinename;
} else {
var timepush = 'No Timeline Entered';
}或者,您可以使用 loop,并在找到匹配时将其断开。我们假设没有输入任何时间线作为“基本状态”,然后我们可以更新一旦找到匹配:
var timepush = 'No Timeline Entered';
for (var item of timeline) {
if (item.townshipname === event.feature.getProperty('township')) {
timepush = item.timelinename;
break;
}
}如果您确实需要IE支持,那么我们可以使用经典的for循环:
var timepush = 'No Timeline Entered';
for (var i = 0; i < timeline.length; i++) {
if (timeline[i].townshipname === event.feature.getProperty('township')) {
timepush = timeline[i].timelinename;
break;
}
}发布于 2019-04-08 21:26:51
因此,有几种不同的方法可以做到这一点,如果您有一个索引对象数组,最快的方法是:
for(var i = 0; i < timeline.length; i++){
if(event.feature.getProperty('township') == timeline[i].townshipname){
var timepush = timeline[i].timelinename;
}
}我很快就会想出另一个例子。
https://stackoverflow.com/questions/55581902
复制相似问题