首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从对象数组中将变量与另一个变量进行比较?

如何从对象数组中将变量与另一个变量进行比较?
EN

Stack Overflow用户
提问于 2019-04-08 21:19:11
回答 2查看 59关注 0票数 0

我正在尝试从我的if中的时间线数组中将event.feature.getProperty(“乡镇”)与timeline.townshipname进行比较。现在检查一个是可以的,但是我有一个完整的专栏我想检查一下。做这件事最好的方法是什么?

代码语言:javascript
复制
    //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'
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-08 21:26:44

您可以从对象的timeline数组中创建乡镇名称数组,以便比较是否在时间线中找到特定的乡镇。

这可以通过以下方式实现:

  1. 使用Array.prototype.map()迭代对象的timeline数组,并返回所有townshipname的列表
  2. 使用Array.prototype.indexOf()检查给定乡镇是否存在于数组中

示例代码如下:

代码语言:javascript
复制
// 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,并在找到匹配时将其断开。我们假设没有输入任何时间线作为“基本状态”,然后我们可以更新一旦找到匹配:

代码语言:javascript
复制
var timepush = 'No Timeline Entered';
for (var item of timeline) {
  if (item.townshipname === event.feature.getProperty('township')) {
    timepush = item.timelinename;
    break;
  }
}

如果您确实需要IE支持,那么我们可以使用经典的for循环:

代码语言:javascript
复制
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;
  }
}
票数 1
EN

Stack Overflow用户

发布于 2019-04-08 21:26:51

因此,有几种不同的方法可以做到这一点,如果您有一个索引对象数组,最快的方法是:

代码语言:javascript
复制
for(var i = 0; i < timeline.length; i++){
    if(event.feature.getProperty('township') == timeline[i].townshipname){
        var timepush = timeline[i].timelinename;
    }
}

我很快就会想出另一个例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55581902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档