如何在javascript中检查对象数组中的索引是否存在?
我的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
<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