Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查对象数组中的对象中是否存在值_Javascript_Arrays - Fatal编程技术网

Javascript 检查对象数组中的对象中是否存在值

Javascript 检查对象数组中的对象中是否存在值,javascript,arrays,Javascript,Arrays,我正在尝试编写以下算法的代码 我有一个活动\u id的数组(数组) ID来自url(字符串) 如果活动\u ID数组中不存在ID值 运行函数A() 否则什么也不做 注意-函数A()只能运行一次 我试着写代码 for (var i = 0; i < activeIds.length; i++) { if (activeIds[i] != uid) { A(); //This is running multiple times. } 我遗漏了一些东

我正在尝试编写以下算法的代码

  • 我有一个
    活动\u id的数组
    (数组)
  • ID
    来自url(字符串)
  • 如果活动\u ID数组中不存在ID值
    • 运行函数A()
  • 否则什么也不做
注意-函数A()只能运行一次

我试着写代码

for (var i = 0; i < activeIds.length; i++) {
    if (activeIds[i] != uid) {
         A();  //This is running multiple times.
    }

我遗漏了一些东西。无法找到它。

如果仅当数组中不存在特定ID(
uid
)时才要调用
函数A()
,则可能需要使用以下方法更改循环方法:

if (activeIds.filter(function(n){ return n===uid }).length==0){
    A();
}
这里有一个函数a()的定义,已经可以使用了

旁注您使用
函数A(){}
的语法只是定义函数A,但它不会运行它。如果要定义并运行一次,可以执行以下操作:

(function A(){
   // logic goes here
})();
试试这个,代码

var i=0;
var isMatchFound = false;

while (activeIds.length >= i) {
  if(activeIds[i] ==uid){
    isMatchFound = true;
    break;
}
 i++;
}

if(isMatchFound){
   //Call Function A
    A();
}

希望这将有所帮助

您可以使用
索引
,如下所示:

if( activeIds.indexOf(id) < 0 ) A();
if(activeIds.indexOf(id)<0)A();

您可以使用indexOf函数,如果数组中不存在元素,该函数将返回-1;如果元素存在,则正数从0开始直到数组(长度-1):

if (activeIds.indexOf(uid) == -1) {
    A();  
}

function A(); 

您可以使用
array.indexof()
函数来查找值。 它看起来是这样的:

if(activeIds.indexOf(uid) === -1){
    A();
}

你能添加一个小提琴链接吗。人们将能够更容易地帮助您。我认为更适合:
activeIds.every(function(v){return v!=uid})
。只是为了确保即使浏览器不支持ES6功能,它也能正常工作。我不确定
activeIds.some(函数(n){returnn==uid})
是否会产生更好的性能。我只是想知道它是否会在碰到真实的情况时立即破裂。顺便说一句,我想得太多了。元素只是原始数字。:)过滤器和每个都是ES5功能。只有IE8需要垫片…
if(activeIds.indexOf(uid) === -1){
    A();
}