2016-03-14 25 views
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值。

回答

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); 
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

@亲爱的,downvoters,为什么downvote? – gurvinder372

1

我建议使用Array#filter与目标数组并返回true(后来也值)如果array1具有相同索引的元素等于搜索值。

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>');

这样的
1
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]) 
    } 
} 
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); 
相关问题