首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用数组中对象的子对象的值来获取该对象的索引。

使用数组中对象的子对象的值来获取该对象的索引。
EN

Stack Overflow用户
提问于 2017-08-25 08:21:17
回答 4查看 46关注 0票数 1

如果我有这样的数组:

代码语言:javascript
复制
var maskedlist = [
  {id:-1,name:'*****选'},
  {id:0,name:'*****(3天)'},
  {id:1,name:'*****'},
  {id:3,name:'*****'},
  {id:2,name:'*****列'},
  {id:4,name:'*****系列'},
  {id:5,name:'*****系列'},
  {id:6,name:'*****系列'},
  {id:7,name:'*****系列'},
  {id:8,name:'*****'},
  {id:9,name:'*****系列'},
  {id:10,name:'*****铺系列'},
  {id:12,name:'*****列'},
  {id:11,name:'*****系列'},
  {id:13,name:'*****系列'},
  {id:14,name:'*****'},
  {id:15,name:'*****列'},
  {id:100,name:'*****部测试号'},
  {id:200,name:'*****厅体验版'},
  {id:201,name:'*****'},
  {id:202,name:'*****单店系列'},
  {id:203,name:'*****多店系列'},
  {id:16,name:'*****系列'},
  {id:17,name:'*****系列'},
  {id:204,name:'*****代运营套餐'},
  {id:205,name:'*****活动运营'},
  {id:206,name:'*****内容运营'},
  {id:207,name:'*****商户运营'},
  {id:208,name:'*****外卖系列'}
]

我将有一个变量incoming_id,它可能匹配obj的一个子id的值,假设它是205

因此,在以下新的obj中:

代码语言:javascript
复制
var entity = {
  selected: maskedlist[index]
} 

现在我怎么才能从index那里得到incoming_id

显然,我可以像这样使用for循环:

代码语言:javascript
复制
for (i = 0; i < maskedlist.length; i++) {
  maskedlist[i].id == incoming_id && index = i
}

感觉不太优雅,如果我有一个足够长的列表,它可能会非常慢,并且可能会时不时地使浏览器崩溃。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-08-25 08:25:52

若要在数组中查找索引,可以使用Array.prototype.findIndex()

但是,根据您的问题,最好使用Array.prototype.find()获取数组maskedlist中的对象,属性id等于205

查找indexentity的代码示例

代码语言:javascript
复制
var maskedlist = [{id: -1,name: '*****选'},{id: 0,name: '*****(3天)'},{id: 1,name: '*****'},{id: 3,name: '*****'},{id: 2,name: '*****列'},{id: 4,name: '*****系列'},{id: 5,name: '*****系列'},{id: 6,name: '*****系列'},{id: 7,name: '*****系列'},{id: 8,name: '*****'},{id: 9,name: '*****系列'},{id: 10,name: '*****铺系列'},{id: 12,name: '*****列'},{id: 11,name: '*****系列'},{id: 13,name: '*****系列'},{id: 14,name: '*****'},{id: 15,name: '*****列'},{id: 100,name: '*****部测试号'},{id: 200,name: '*****厅体验版'},{id: 201,name: '*****'},{id: 202,name: '*****单店系列'},{id: 203,name: '*****多店系列'},{id: 16,name: '*****系列'},{id: 17,name: '*****系列'},{id: 204,name: '*****代运营套餐'},{id: 205,name: '*****活动运营'},{id: 206,name: '*****内容运营'},{id: 207,name: '*****商户运营'},{id: 208,name: '*****外卖系列'}],
    index = maskedlist.findIndex(obj => obj.id === 205),
    entity = {
      selected: maskedlist.find(obj => obj.id === 205)
    };

console.log('index:', index);
console.log('entity:', entity);

票数 2
EN

Stack Overflow用户

发布于 2017-08-25 08:27:36

你能试试这个吗?

代码语言:javascript
复制
 let index='';
    maskedlist.some(function(o){if( o["key1"] === "value2"){index = 
    maskedlist.indexOf(o["key1"]) }})

如果找到对,则为true,否则为false。

这假设每个对象只包含一个键/值对,并且该值从未未定义过。

票数 0
EN

Stack Overflow用户

发布于 2017-08-25 08:27:43

最好使用Array.prototype.find()

代码语言:javascript
复制
var maskedlist = [
  {id:-1,name:'*****选'},
  {id:0,name:'*****(3天)'},
  {id:1,name:'*****'},
  {id:3,name:'*****'},
  {id:2,name:'*****列'},
  {id:4,name:'*****系列'},
  {id:5,name:'*****系列'},
  {id:6,name:'*****系列'},
  {id:7,name:'*****系列'},
  {id:8,name:'*****'},
  {id:9,name:'*****系列'},
  {id:10,name:'*****铺系列'},
  {id:12,name:'*****列'},
  {id:11,name:'*****系列'},
  {id:13,name:'*****系列'},
  {id:14,name:'*****'},
  {id:15,name:'*****列'},
  {id:100,name:'*****部测试号'},
  {id:200,name:'*****厅体验版'},
  {id:201,name:'*****'},
  {id:202,name:'*****单店系列'},
  {id:203,name:'*****多店系列'},
  {id:16,name:'*****系列'},
  {id:17,name:'*****系列'},
  {id:204,name:'*****代运营套餐'},
  {id:205,name:'*****活动运营'},
  {id:206,name:'*****内容运营'},
  {id:207,name:'*****商户运营'},
  {id:208,name:'*****外卖系列'}
]

var entity = {}

entity.selected = maskedlist.find(item => item.id === 205)

console.log(entity)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45877190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档