如何获取数组中所有相同值的索引?

3

我有两个数组,分别是arr1和arr2。这两个数组包含不同类型的值。在数组一中,我多次重复了某些值。我怎样才能找到相同值的下标和值呢?另外,如何通过数组一中相同值的下标来获取数组二中的值?

var arr1 = [100, 200, 100, 300, 600, 200];
var arr2 = [1, 2, 3, 4, 5, 6];

例如,如果我的自定义值是200。arr1的结果将为[1, 5]。如何获取类似[2, 6]的arr2值。
5个回答

2

类似于这样的:

var arr1 = [100, 200, 100, 300, 600, 200];
var arr2 = [1, 2, 3, 4, 5, 6];

var _arr1 = [];
var _arr2 = [];

for( var i = arr1.indexOf(200); i >= 0; i = arr1.indexOf(200,i+1) ) {
  _arr1.push(i);
  _arr2.push( arr2[i] );
}

console.log( _arr1, _arr2 );

2
var arr1 = [100, 200, 100, 300, 600, 200];
var obj={};
for(var iloop=0; iloop< arr1.length; iloop++){
   if(obj[ arr1[iloop] ]){
     obj[ arr1[iloop] ].push(iloop) ;
   }else{
     obj[ arr1[iloop] ]  = [iloop];
   }
}

for(var k in obj){
  if(obj[k] && obj[k].length>1){
    console.log(k, obj[k])
  }
}

1
我建议使用 Array#filter 方法与目标数组一起使用,如果 array1 中与搜索值相同索引的元素相等,则返回 true(稍后也会返回值)。

filter() 方法通过提供的函数实现测试并创建一个新数组,其中包含所有通过测试的元素。

var arr1 = [100, 200, 100, 300, 600, 200],
    arr2 = [1, 2, 3, 4, 5, 6];

function getMappedValues(array1, array2, value) {
    return array2.filter(function (_, i) {
        return array1[i] === value;
    });
}

document.write('<pre>' + JSON.stringify(getMappedValues(arr1, arr2, 200), 0, 4) + '</pre>');


0
尝试
  function findIndexes(arr, value, fromIndex, indexes)
    {
       indexes = indexes || [];
       var index = arr.indexOf(value, fromIndex+1);
       console.log(index);
       if ( index != -1)
       {
          indexes.push(index);
          findIndexes(arr, value, index, indexes)
       }
    }
    var arr1 = [100, 200, 100, 300, 600, 200];
    var arr2 = [];
    var value = 200;
    findIndexes(arr1, value, -1, arr2);
    document.write(arr2);

0

实现这一操作的一种方法是遍历数组1并找到自定义值

  • 将该索引放入一个数组中
  • 从该索引中获取数组2的值,并将其放入另一个数组中

以下是代码示例:

    var arr1 = [100, 200, 100, 300, 600, 200];
    var arr2 = [1, 2, 3, 4, 5, 6];
    var index=[];
    var result=[];

    var customValue=200;

    for(var i=0;i<arr1.length;i++){
      if(arr1[i]==customValue){
        result.push(arr2[i]);
        index.push(i);
      }
    }
    console.log(index);
    console.log(result);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接