如何检查Javascript函数中的条件?

如何检查Javascript函数中的条件?,javascript,html,ios,Javascript,Html,Ios,我是Javascript新手。我有一个JS方法。我有很多wifi网络的列表。但是几乎所有的时间SSID和SecurityMode都是一样的。如果两者相同,我想进行筛选。假设SSID是“sampleWifi”&SecurityMode是“PSK”,同样的SSID和SecurityMode再次出现。如何避免添加列表数组 我的代码如下: device.networkList = []; for (var i = 1; i <= jqXHR.responseJSON.length; i++)

我是Javascript新手。我有一个JS方法。我有很多wifi网络的列表。但是几乎所有的时间SSIDSecurityMode都是一样的。如果两者相同,我想进行筛选。假设SSID是“sampleWifi”&SecurityMode是“PSK”,同样的SSIDSecurityMode再次出现。如何避免添加列表数组

我的代码如下:

device.networkList = [];
  for (var i = 1; i <= jqXHR.responseJSON.length; i++) {
    site = jqXHR.responseJSON[i - 1];
    device.networkList.push({
      name: site["AvailableNetworks." + i + ".SSID"],
      signal: site["AvailableNetworks." + i + ".SignalStrength"],
      security: site["AvailableNetworks." + i + ".SecurityMode"]
    });
  }
device.networkList=[];

对于(var i=1;i您需要一个函数或代码来读取数组中的所有值,并通过SSID和SecurityMode进行验证,对于用户定义的对象,数组中没有用于检查存在的本机函数

通用功能:

function exists(array, func) {
    var value = false;

    for (var i = 0; i < array.length; i++) {
        value = func(array[i]);

        if (value == true) {
            break;
        }
    }

    return value;
};
用法:

var foo = exists(array, function (item) {
    return item.name == "foo" && item.security == "integrated";
});

console.log(foo); // true

您需要有一个函数或代码来读取数组中的所有值,并通过SSID和SecurityMode进行验证。对于用户定义的对象,数组中没有用于检查的本机函数

通用功能:

function exists(array, func) {
    var value = false;

    for (var i = 0; i < array.length; i++) {
        value = func(array[i]);

        if (value == true) {
            break;
        }
    }

    return value;
};
用法:

var foo = exists(array, function (item) {
    return item.name == "foo" && item.security == "integrated";
});

console.log(foo); // true

正如Rayon所说,您只需要遍历数组并检查以前是否给出了类似的值

它可以是这样一个函数:

function isDuplicate(networks, name, security) {
    for (var i = 0; i < networks.length; i++) {
        if(networks[i].name == name && networks[i].security == security) // Found duplicate
            return true;
    }

    return false; // Doesn't already exist
}
功能是双重的(网络、名称、安全性){
对于(var i=0;i
如Rayon所述,您只需遍历数组并检查之前是否给出了类似的值

它可以是这样一个函数:

function isDuplicate(networks, name, security) {
    for (var i = 0; i < networks.length; i++) {
        if(networks[i].name == name && networks[i].security == security) // Found duplicate
            return true;
    }

    return false; // Doesn't already exist
}
功能是双重的(网络、名称、安全性){
对于(var i=0;i
您可以使用对象或集合(如果支持ES6)来跟踪您已经添加的内容,然后在条件中检查该集合。您可以使用ssid和securityMode的组合为集合创建一个键,以便在一个键中同时考虑这两个项

device.networkList = [];
var soFar = new Set();
jqXHR.responseJSON.forEach(function(site, index) {
    var key = site.SSID + site.securityMode;
    var i = index + 1;
    if (!soFar.has(key)) {
        device.networkList.push({
            name: site["AvailableNetworks." + i + ".SSID"],
            signal: site["AvailableNetworks." + i + ".SignalStrength"],
            security: site["AvailableNetworks." + i + ".SecurityMode"]
        })
        soFar.add(key);
    }
});

有关
集合的信息,请参见。

您可以使用对象或集合(如果支持ES6)跟踪已添加的内容,然后在条件中检查该集合。您可以使用ssid和securityMode的组合为集合创建一个键,以便在一个键中同时考虑这两项

device.networkList = [];
var soFar = new Set();
jqXHR.responseJSON.forEach(function(site, index) {
    var key = site.SSID + site.securityMode;
    var i = index + 1;
    if (!soFar.has(key)) {
        device.networkList.push({
            name: site["AvailableNetworks." + i + ".SSID"],
            signal: site["AvailableNetworks." + i + ".SignalStrength"],
            security: site["AvailableNetworks." + i + ".SecurityMode"]
        })
        soFar.add(key);
    }
});
查看
集合
polyfill.

是的,我找到了

 var sap_ssid ;
  var sap_signalStrength;
  var sap_securityMode;

  device.networkList = [];
  for (var i = 1; i <= jqXHR.responseJSON.length; i++) {
      site = jqXHR.responseJSON[i - 1];

      sap_ssid = site["AvailableNetworks." + i + ".SSID"];
      sap_signalStrength = site["AvailableNetworks." + i + ".SignalStrength"];
      sap_securityMode = site["AvailableNetworks." + i + ".SecurityMode"];

      if (device.networkList.length == 0)
      {
          device.networkList.push({
                                  name: sap_ssid,
                                  signal: sap_signalStrength,
                                  security: sap_securityMode
                                  });
      }
      else{
          var isfind = false;
          for(var j = 0; j < device.networkList.length; j++)
          {
              if (device.networkList[j].name == sap_ssid && device.networkList[j].security == sap_securityMode)
              {
                  isfind = true;
                  break;
              }
          }


          if (!isfind)
          {
              device.networkList.push({
                                      name: sap_ssid,
                                      signal: sap_signalStrength,
                                      security: sap_securityMode
                                      });
          }
      }
  }
var sap_ssid;
var sap_信号强度;
var-sap_-securityMode;
device.networkList=[];
对于(var i=1;i是的,我得到了它

 var sap_ssid ;
  var sap_signalStrength;
  var sap_securityMode;

  device.networkList = [];
  for (var i = 1; i <= jqXHR.responseJSON.length; i++) {
      site = jqXHR.responseJSON[i - 1];

      sap_ssid = site["AvailableNetworks." + i + ".SSID"];
      sap_signalStrength = site["AvailableNetworks." + i + ".SignalStrength"];
      sap_securityMode = site["AvailableNetworks." + i + ".SecurityMode"];

      if (device.networkList.length == 0)
      {
          device.networkList.push({
                                  name: sap_ssid,
                                  signal: sap_signalStrength,
                                  security: sap_securityMode
                                  });
      }
      else{
          var isfind = false;
          for(var j = 0; j < device.networkList.length; j++)
          {
              if (device.networkList[j].name == sap_ssid && device.networkList[j].security == sap_securityMode)
              {
                  isfind = true;
                  break;
              }
          }


          if (!isfind)
          {
              device.networkList.push({
                                      name: sap_ssid,
                                      signal: sap_signalStrength,
                                      security: sap_securityMode
                                      });
          }
      }
  }
var sap_ssid;
var sap_信号强度;
var-sap_-securityMode;
device.networkList=[];


对于(var i=1;我只是检查您是否已经在
数组中推送了相同的值
如何在JS中检查它。这就是我的问题:)还记得循环的
如果条件
?对不起,我不明白你的问题。你得到了什么结果?你想要什么结果?还是不明白。请在
jqXHR.responseJSON
中显示实际传入的数据和所需的输出结果。如果你愿意显示,我们可以在一秒钟内回答,我们会ld可能提供了更好的方法。只需检查您是否已经在
数组中推送了相同的值
如何在JS中进行检查。这就是我的问题:)还记得循环的
如果条件
?对不起,我不明白你的问题。你得到了什么结果?你想要什么结果?还是不明白。请在
jqXHR.responseJSON
中显示实际传入的数据和所需的输出结果。如果你愿意显示,我们可以在一秒钟内回答,我们会ld可能会提供更好的方法。site.SSID&site.securityMode即将推出undefined@SRNayak-到此为止!如果您只需向我们展示您的实际JSON,那么我们就可以停止猜测其中包含哪些字段。您应该能够将此代码改编为您拒绝向我们展示的神秘JSON中的任何实际属性名称。这向您展示了如何做到这一点。我们无法读懂您对未显示的属性名称的想法。请使用此代码并调整它以匹配您的实际JSON。我已经三次要求您向我们展示您的实际JSON,但您拒绝了。我已经一次又一次地问您了。我理解您的话。但问题是,无论我在上面发布了什么代码,我都想加入仅此代码。无需更改任何内容,只需给出一个条件。因为未经允许,我无法更改该代码。@SRNayak-我向您演示了如何更改代码。如果您不想将其调整为JSON中拒绝与我们共享的实际属性名,那么这不是我的问题。除非您披露,否则我不会回复您整个问题。感谢您的回答@jfriend00:)site.SSID和site.securityMode即将到来undefined@SRNayak-我受够了!如果您只是向我们展示您的实际JSON,那么我们就可以停止猜测其中包含哪些字段。您应该能够根据您拒绝向我们展示的神秘JSON中的任何实际属性名称修改此代码。这会告诉你怎么做。我们无法读懂你对没有显示的房产名称的想法。使用此代码并调整它以匹配实际的JSON。我已经三次要求您向我们展示您的实际JSON,但您拒绝了。我已经一次又一次地问你了,我明白你的话。但问题是,无论我在上面发布了什么代码,我只想在那个代码中。不需要改变任何东西,只需要给出一个条件。因为未经允许我不能更改代码。@SRNayak-我告诉过你怎么做。如果您不想将其调整为您拒绝与我们共享的JSON中的实际属性名,那么这不是我的问题。除非你披露整个问题,否则我不会再回复你了。谢谢你的回答@jfriend00:)