Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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_Object_For Loop - Fatal编程技术网

如何在javascript中检查对象数组中的索引是否存在?

如何在javascript中检查对象数组中的索引是否存在?,javascript,arrays,object,for-loop,Javascript,Arrays,Object,For Loop,我的javascript代码如下所示: <script type="text/javascript"> var team = [{id:"1", name:"chelsea"}, {id:"3", name:"mu"}, {id:"5", name:"arsenal"}]; for(var i = 0; i < 5; i++) { if(team[i].id || typeof team[i].id !== 'undefined' || team

我的javascript代码如下所示:

<script type="text/javascript">
    var team = [{id:"1", name:"chelsea"}, {id:"3", name:"mu"}, {id:"5", name:"arsenal"}];
    for(var i = 0; i < 5; i++) {
        if(team[i].id || typeof team[i].id !== 'undefined' || team[i].id !== null) {
            console.log(team[i].id)
        }
        else {
            console.log(i+1)
        }
    }
</script>
如果代码运行,控制台上存在如下错误:

<script type="text/javascript">
    var team = [{id:"1", name:"chelsea"}, {id:"3", name:"mu"}, {id:"5", name:"arsenal"}];
    for(var i = 0; i < 5; i++) {
        if(team[i].id || typeof team[i].id !== 'undefined' || team[i].id !== null) {
            console.log(team[i].id)
        }
        else {
            console.log(i+1)
        }
    }
</script>
未捕获的TypeError:无法读取未定义的属性“id”

然而,如果变量不存在,我有一个附加条件

我怎样才能解决它呢?

很少观察到

应该使用数组,而不是for循环内部的硬编码值“5” 长度,即在本例中为团队长度 而不是记录“i+1”给你 可以将“i”记录为数组索引从“0”开始。或者你可以简单地打印 对象/团队名称。 这是修改后的代码

<script type="text/javascript">
    var team = [{id:"1", name:"chelsea"}, {id:"3", name:"mu"}, {id:"5", name:"arsenal"}];
    for(var i = 0; i < team.length; i++) {
        if(team[i].id || typeof team[i].id !== 'undefined' || team[i].id !== null) {
            console.log(team[i].id)
        }
        else {
            console.log('team id not found for index ' + i);
        }
    }
</script>

主要问题是您正在检查对象的属性,在本例中是team[i],该属性可能未定义

例如,如果您console.logteam[4],它将指向undefined,因为团队中只有3个对象。检查未定义的属性将导致错误

var arr=[1,2,3] //这将是未定义的 var元素=arr[4]
console.logelement.toString正如我所理解的,当你在评论输出1,2,3,4,5中说你需要缺少的ID时,在你的例子中有2,4个

var团队=[{id:1,名称:切尔西},{id:3,名称:穆},{id:5,名称:阿森纳}]; var empty_id=0; forvar i=0;i<5;i++{ ifteam[i]&&typeof团队[i]!='undefined'&&team[i]!==null{ ifparseIntteam[i].id!==i+1{//检查数组上的id是否不等于循环中的i+1 对于var k=1;k如果空的_id使用i