Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取数组中相同值的所有匹配项的索引?_Javascript_Jquery_Html_Arrays - Fatal编程技术网

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

Javascript 如何获取数组中相同值的所有匹配项的索引?,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我有两个数组,像arr1,arr2。每个数组具有不同类型的值。在array one中,我多次重复了一些值。如何获得相同的值索引和值? 另外,如何从一个相同值索引的数组中获取两个值 var arr1 = [100, 200, 100, 300, 600, 200]; var arr2 = [1, 2, 3, 4, 5, 6]; 例如,如果我的自定义值为200。arr1结果将为[1,5]。如何获得[2,6]这样的arr2值。试试看 function findIndexes(arr, value

我有两个数组,像arr1,arr2。每个数组具有不同类型的值。在array one中,我多次重复了一些值。如何获得相同的值索引和值? 另外,如何从一个相同值索引的数组中获取两个值

var arr1 = [100, 200, 100, 300, 600, 200];
var arr2 = [1, 2, 3, 4, 5, 6];
例如,如果我的自定义值为200。arr1结果将为[1,5]。如何获得[2,6]这样的arr2值。

试试看

  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);
大概是这样的:

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 );
我建议与目标数组一起使用,如果具有相同索引的
array1
元素等于搜索值,则返回
true
(后面也是值)

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

var arr1=[100200100300600200],
arr2=[1,2,3,4,5,6];
函数getMappedValues(array1、array2、value){
返回array2.filter(函数(\ui){
返回数组1[i]==值;
});
}
write(“”+JSON.stringify(getMappedValues(arr1,arr2200),0,4)+’
var arr1=[100200100300600200];
var obj={};
对于(var-iloop=0;iloop1){
console.log(k,obj[k])
}
}

一种方法是遍历数组1,然后找到自定义值

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

var arr1=[100200100300600200];
var arr2=[1,2,3,4,5,6];
var指数=[];
var结果=[];
var值=200;
对于(var i=0;i
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])
  }
}
    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);