2016-03-14 40 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); 
相關問題