如何在javascript中查找和排序数组中对象元素的索引

如何在javascript中查找和排序数组中对象元素的索引,javascript,arrays,find,indexof,Javascript,Arrays,Find,Indexof,问题的更新版本:我的目标是获取该数组元素的索引,条件是键参数的子元素param_name将定义对象的索引。例如,键名为“caller1”的对象的默认索引应为0,但由于参数名为“caller2”,因此将采用索引1;类似地,键名为“caller3”的对象3将采用索引0,因为参数名称为“caller1”。对于键名为“caller2”的对象2,由于参数名称与键名caller2相同,因此将保留其默认索引1 const array1 = [{ name: 'caller1',

问题的更新版本:我的目标是获取该数组元素的索引,条件是键参数的子元素param_name将定义对象的索引。例如,键名为“caller1”的对象的默认索引应为0,但由于参数名为“caller2”,因此将采用索引1;类似地,键名为“caller3”的对象3将采用索引0,因为参数名称为“caller1”。对于键名为“caller2”的对象2,由于参数名称与键名caller2相同,因此将保留其默认索引1

const array1 = [{
        name: 'caller1',
        cost: 12,
        params:[{param_name:'caller2',apparatus:'fittings'}]
      },
      {
        name: 'caller2',
        cost: 2,
        params:[{param_name:'caller2',apparatus:'fittings'}]
      },
      {
        name: 'caller3',
        cost: 12,
        params:[{param_name:'caller1',apparatus:'valves'}]
      }
    ];
    const results = []
    for (let j=0; j<array1.length;j++){
      results[j] = array1[j].findIndex(a => a.name==array1[j].name);
    }
    console.log(results);
常量数组1=[{
名称:'caller1',
费用:12,
参数:[{参数名称:'caller2',设备:'fittings'}]
},
{
名称:'caller2',
费用:2,
参数:[{参数名称:'caller2',设备:'fittings'}]
},
{
名称:'caller3',
费用:12,
参数:[{参数名称:'caller1',设备:'valves'}]
}
];
常量结果=[]
for(设j=0;j a.name==array1[j].name);
}
控制台日志(结果);
您可以选择一个索引并映射索引

const
数组=[{name:'caller1',成本:12,参数:[{param_name:'caller2',设备:'fittings'}]},{name:'caller2',成本:2,参数:[{param_name:'caller2',设备:'fittings'}]},{name:'caller3',成本:12,参数:[{param_name:'caller1',fittings'}],
map=newmap(array.map(({name},i)=>[name,i]),
result=array.map({params:[{param_name}]})=>map.get(param_name));

控制台日志(结果)
您需要从
params
获取属性,并将其用作在主数组上循环时使用的搜索参数

var indexes = array1.map(element => {
  var nameToCheck = element.params[0].param_name;
  for (let i = 0; i < array1.length; i++) {
    if (array1[i].name == nameToCheck) {
      return i;
    }
  }
})
var index=array1.map(元素=>{
var nameToCheck=element.params[0]。param\u name;
for(设i=0;i

演示

常量数组1=[{
名称:'caller1',
费用:12,
参数:[{
参数名称:“caller2”,
仪器:“配件”
}]
},
{
名称:'caller2',
费用:2,
参数:[{
参数名称:“caller2”,
仪器:“配件”
}]
},
{
名称:'caller3',
费用:12,
参数:[{
参数名称:“caller1”,
仪器:“阀门”
}]
}
];
var index=array1.map(元素=>{
var nameToCheck=element.params[0]。param\u name;
for(设i=0;iconsole.log(索引)请同时添加想要的结果。顺便说一句,看起来您希望将对象作为数组进行查找。这不起作用。我不确定我是否理解目标,如果
a
array[j]
中的对象/元素,那么元素的索引将是
j
,并带有示例代码。所以你的索引数组应该是
Object.keys(array1)
。如果
a
是另一个数组(例如另一个数组),您需要澄清它以及它的来源,请更详细地解释您试图实现的目标。断开的代码不能很好地替代正确的解释。我想使用数组中每个对象的键名获取数组中名为array1的对象的索引。因此,名为results的数组将是:results=[0,1,2]。@Isaac然后是它的just
Object.keys(array1)