我有两个数组,比如arr1,arr2。每个数组都有不同类型的值。在数组一中,我多次重复一些值。我怎样才能获得相同的价值指数和价值? 另外,如何从数组中获取数组的两个值相同的值索引?
Func
例如,如果我的自定义值为200.arr1结果将为[1,5]。如何获得像[2,6]这样的arr2值。
答案 0 :(得分: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 );
答案 1 :(得分:1)
如果具有相同索引的true
元素等于搜索值,我建议对目标数组使用Array#filter
并返回array1
(稍后也是值)。< / p>
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>');
&#13;
答案 2 :(得分: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])
}
}
答案 3 :(得分: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);
答案 4 :(得分:0)
执行此操作的一种方法是通过数组1并找到自定义值
这是代码
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);