简体   繁体   English

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

[英]How can I find and sort the indexes of the elements of an object in array in javascript

Updated Version of the Problem: my goal is to get the indexes of the of the element of this array, with the condition that the subelement param_name of key params will define the index of the object.问题的更新版本:我的目标是获取该数组元素的索引,条件是 key params 的子元素 param_name 将定义对象的索引。 For instance, object with key name 'caller1' should have a default index of 0, but since param_name is 'caller2' it will take index 1;例如,键名为 'caller1' 的对象的默认索引应该是 0,但由于 param_name 是 'caller2',所以它会采用索引 1; similarly object 3 with key name 'caller3' will take index 0 since param_name is 'caller1'.同样,键名为 'caller3' 的对象 3 将采用索引 0,因为 param_name 是 'caller1'。 For object 2 with key name 'caller2' since param_name is same as key name caller2 it will retain its default index of 1.对于键名为“caller2”的对象 2,因为 param_name 与键名 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);

You could take a Map and map the indices.您可以使用Map并映射索引。

 const array = [{ 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' }] }], map = new Map(array.map(({ name }, i) => [name, i])), result = array.map(({ params: [{ param_name }] }) => map.get(param_name)); console.log(result);

You need to take the property from params and use that as a search parameter to use when looping over the main array您需要从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;
    }
  }
})

Demo演示

 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' }] } ]; 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; } } }) console.log(indexes);

Note that if params actually contains more than 1 element you would need to account for that and decide which one you need to use and change the element.params[0].param_name;请注意,如果params实际上包含 1 个以上的元素,您需要考虑到这一点并决定您需要使用哪个element.params[0].param_name;并更改element.params[0].param_name; line accordingly相应地行

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在JavaScript中找到数组最大值的所有索引? - How can I find all indexes of the max value of an array in javascript? 查找等于sum的数组中元素的索引-Javascript - Find indexes of elements in an array equal to sum - Javascript 如何使用第二个数组元素查找数组中多个元素的索引,然后使用结果匹配第三个数组的索引(Javascript) - How to find indexes of multiple elements in array with second array elements and then use result to match index of third array (Javascript) 如何将数组中的元素添加到 JavaScript 中的空 object? - How can I add elements from an array to an empty object in JavaScript? Javascript 排序 object 关键指标 - Javascript sort object key indexes 我怎样才能在javascript中对3维数组进行排序? - How can i sort 3 dimensional array in javascript? 如何使用 javascript 对间接数组进行排序? - How can I sort an indirect array with javascript? 如何在 Javascript 中按段对数组进行排序 - How can I sort an array by segments in Javascript 如何手动排序(移动)数组元素,反应和/或javascript? - How can I manually sort (move) array elements around, in react and/or javascript? 如何在 JavaScript 中更改对象数组的索引键 - How to change indexes keys an array of object in JavaScript
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM