检查数组中的项目

Checking for an item in an array

我无法找到正确的方法来查找 for 循环中的项目是否在数组中。假设我有一个 for 循环遍历某些结果。如果它们在数组中:

 ctids = [];

继续 for 循环中的下一步,但如果没有,则将它们推入数组并执行其他操作。正确的语法是什么?

for (var i=0;i<results.features.length;i++){
          ACS_BG = results.features[i].attributes.BLKGRPCE;
          ACS_ST = results.features[i].attributes.STATEFP;
          ACS_CNTY = results.features[i].attributes.COUNTYFP;
          ACS_TRCT = results.features[i].attributes.TRACTCE;

    if ACS_TRCT exists in ctids { //This is where I am having trouble. 
        continue;       //skip the rest of the if statement
    } else {
        ctids.push(ACS_TRCT);
    //   do something else;
    };
};

您可以使用 .find 检查该项目是否已存在于数组中(仅适用于基本类型)

var found = ctids.find(function(value) {
    return ACS_TRCT === value;
});

if(!found) {
    ctids.push(ACS_TRCT);
}

您可以使用 includes 来检查元素是否存在于数组中,如果不存在则将元素推入其中。

if (ctids.includes(ACS_TRCT)){
continue;
}else{
ctids.push(ACS_TRCT)
}

我愿意:

for (var i = 0; i < results.features.length; i++) {
  const ACS_BG = results.features[i].attributes.BLKGRPCE;
  const ACS_ST = results.features[i].attributes.STATEFP;
  const ACS_CNTY = results.features[i].attributes.COUNTYFP;
  const ACS_TRCT = results.features[i].attributes.TRACTCE;

  // push ACS_TRCT, ACS_ST, ACS_TRCT, ACS_CNTY to resulting
  // array ctids if they don't present using `.includes` method.
  if (!ctids.includes(ACS_TRCT)) ctids.push(ACS_TRCT);
  if (!ctids.includes(ACS_ST)) ctids.push(ACS_ST);
  if (!ctids.includes(ACS_CNTY)) ctids.push(ACS_CNTY);
  if (!ctids.includes(ACS_TRCT)) ctids.push(ACS_TRCT);
}

你能试试这个代码吗

    var ctids = []
    for (var i=0;i<results.features.length;i++){
          ACS_BG = results.features[i].attributes.BLKGRPCE;
          ACS_ST = results.features[i].attributes.STATEFP;
          ACS_CNTY = results.features[i].attributes.COUNTYFP;
          ACS_TRCT = results.features[i].attributes.TRACTCE;

          if(!ctids.includes(ACS_TRCT))
          {
             ctids.push(ACS_TRCT);
          }
};