Javascript 使用数组中对象的子对象的值来获取所述对象的索引

Javascript 使用数组中对象的子对象的值来获取所述对象的索引,javascript,arrays,Javascript,Arrays,如果我有这样一个数组: 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:'*****系列'

如果我有这样一个数组:

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中:

var entity = {
  selected: maskedlist[index]
} 
现在,我如何才能从
传入的\u id
获取
索引

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

for (i = 0; i < maskedlist.length; i++) {
  maskedlist[i].id == incoming_id && index = i
}
(i=0;i{ 掩码列表[i].id==传入的\u id&&index=i }
感觉不是很优雅,如果我有一个足够长的列表,它会非常慢,并且可能会不时使浏览器崩溃。

要在数组中查找索引,可以使用

但根据您的问题,最好使用use来获取数组
掩码列表中的对象,其属性
id
等于
205

查找索引实体的代码示例:

var maskedlist=[{id:-1,name:'*****选'},{id:0,名称:'*****(3)天)'},{id:1,名称:'****'},{id:3,名称:'****'},{id:2,名称:'*****列'},{id:4,名称:'*****系列'},{id:5,名称:'*****系列'},{id:6,名称:'*****系列'},{id:7,名称:'*****系列'},{id:8,名称:'*****'},{id:9,名称:'*****系列'},{id:10,姓名:'*****铺系列'},{id:12,姓名:'*****列'},{id:11,姓名:'*****系列'},{id:13,姓名:'*****系列'},{id:14,姓名:'*****'},{id:15,姓名:'*****列'},{id:100,姓名:'*****部测试号'},{id:200,姓名:'*****厅体验版'},{id:201,名称:'*****'},{id:202,名称:'*****单店系列'},{id:203,姓名:'*****多店系列'},{id:16,姓名:'*****系列'},{id:17,姓名:'*****系列'},{id:204,姓名:'*****代运营套餐'},{id:205,姓名:'*****活动运营'},{id:206,姓名:'*****内容运营'},{id:207,姓名:'*****商户运营'},{id:208,姓名:'*****外卖系列'}],
index=maskedlist.findIndex(obj=>obj.id==205),
实体={
选中:maskedlist.find(obj=>obj.id==205)
};
console.log('索引:',索引);
console.log('entity:',entity);
您能试试这个吗

 let index='';
    maskedlist.some(function(o){if( o["key1"] === "value2"){index = 
    maskedlist.indexOf(o["key1"]) }})
如果找到对,则为true,否则为false

这假设每个对象只包含一个键/值对,并且该值永远不会未定义

var maskedlist=[
{id:-1,名称:'*****选'},
{id:0,名称:'*****(3)天)'},
{id:1,名称:'******'},
{id:3,名称:'******'},
{id:2,名称:'*****列'},
{id:4,名称:'*****系列'},
{id:5,名称:'*****系列'},
{id:6,名称:'*****系列'},
{id:7,名称:'*****系列'},
{id:8,名称:'******'},
{id:9,姓名:'*****系列'},
{id:10,姓名:'*****铺系列'},
{id:12,姓名:'*****列'},
{id:11,姓名:'*****系列'},
{id:13,姓名:'*****系列'},
{id:14,名称:'*****'},
{id:15,姓名:'*****列'},
{id:100,姓名:'*****部测试号'},
{id:200,姓名:'*****厅体验版'},
{id:201,名称:'******'},
{id:202,名称:'*****单店系列'},
{id:203,姓名:'*****多店系列'},
{id:16,姓名:'*****系列'},
{id:17,姓名:'*****系列'},
{id:204,姓名:'*****代运营套餐'},
{id:205,姓名:'*****活动运营'},
{id:206,姓名:'*****内容运营'},
{id:207,姓名:'*****商户运营'},
{id:208,姓名:'*****外卖系列'}
]
变量实体={}
entity.selected=maskedlist.find(item=>item.id==205)
console.log(实体)
您可以使用: array.find(函数(currentValue、index、arr)、thisValue)

所以,它会是这样的:

var entity = {
   selected: maskedlist.find(function(obj) {
       return obj.id === incoming_id ;
    })
  };

这是无效的,因为即使找到了
obj.id