当前位置: 首页 > 知识库问答 >
问题:

indexOf在对象的数组上,而不是在数组上[重复]

太叔昆
2023-03-14

我知道要在数组中查找值是否存在,我可以使用indexOf,但如何使用对象数组呢?

const x = [{
  "id": "roadshows",
  "name": "Roadshows"
}, {
  "id": "sporting_events",
  "name": "Sporting Events"
}]

console.log( x.indexOf('roadshows') ) // don't work

共有3个答案

景成和
2023-03-14

手动我会做这样的事情:

for(let item of x) {
 if ( item.hasOwnProperty('id') && item['id'] == 'roadshows' ) {   
    //do your stuff here
 }
}
孟俊晖
2023-03-14

你必须循环,因为你有对象的内部数组。

for(var i = 0; i < x.length; i++) {
    if (x[i].id== 'roadshows') {
        console.log(i);
        break;
    }
}

或者,如果您只是检查具有该id的对象是否存在,那么filter非常方便

if (x.filter(function(e) x.id== 'roadshows').length > 0) {
  // Yay. Do Something
}
宰修能
2023-03-14

由于这是标记为ecmascript-6的,因此这里有一个ES6数组方法array#findIndex()

const x = [{
  "id": "roadshows",
  "name": "Roadshows"
}, {
  "id": "sporting_events",
  "name": "Sporting Events"
}]

console.log( x.findIndex( o => o.id === 'roadshows' ) )
 类似资料:
  • 问题内容: 在Python中,我可以执行以下操作: 有对象列表时,有什么简单的方法可以做到这一点? 还是我必须求助于for循环? 问题答案: 您可以改用列表推导或生成器表达式:

  • 问题内容: 有没有一种方法可以定义次数,而不必总是遍历数组? 例如,在下面,我希望列表项显示5次,并假设等于5,并且增加数字,因此每个列表项都按1、2、3、4、5递增 所需结果: 问题答案: 较新版本的AngularJS(> = 1.3.0)允许您仅使用变量(无需功能)来执行此操作: 在首次提出问题时这是不可能的。感谢@Nikhil Nambiar从下面的回答中获得此更新 原创(5/29/2013

  • 问题内容: 可能重复: JavaScript:检查对象是否为数组? 为什么将对象数组视为对象而不是数组?例如: 问题答案: javascript的怪异行为和规范之一就是Array is 。 您可以通过以下几种方法检查变量是否为数组: 但是最可靠的方法是: 由于您使用jQuery标记了问题,因此可以使用jQuery函数:

  • 问题内容: 获取包含对象的数组的索引的最佳方法是什么? 想象一下这种情况: 现在,我想拥有对象对象,该对象的属性在此示例中为。 我是JavaScript的新手,我不知道是否有一个简单的方法,或者是否应该构建自己的函数来做到这一点。 问题答案: 我认为您可以使用map函数在一行中解决它:

  • 问题内容: 只是试图在视图中显示我通过ajax从控制器获取的数组,但它显示的是[object Object],[object Object]而不是array。请在下面检查我的js文件: 问题答案: 使用转换到。 试试这个: 我认为,这对您有帮助-

  • 我有一个包含HTML元素的数组(我用)填充了它,我试图在该数组中查找元素的索引,但控制台给出了错误: 未捕获的TypeError:rows.indexOf不是函数 我用它来填充数组所需的HTML元素: 值得注意的是,这些元素是用javascript生成的,然后使用放入数组中。如果要检查整个过程,这里有一个jsfiddle