Javascript-两个数组相同的密钥

时间:2016-07-14 04:32:09

标签: javascript arrays key intersection

如果可以解决以下问题,我将不胜感激

阵列

null

输出必须显示在下面

var arr1 = [1,2,3,4,5]; 
var arr2 = [0,2,1,3]; 
var arr3 = [];

arr3 = arr1 (intersection) arr2;

Javascript按钮值如何添加数组?

arr3 = [2];

然后单击按钮,数组索引值的单击按钮将更改为0到1.

4 个答案:

答案 0 :(得分:1)

如果我理解正确的要求,这应该可以解决问题:

function matchingElements(arr1, arr2) {
  var result = [];
  for (var i = 0; i < arr1.length && i < arr2.length; i++) {
    if (arr1[i] === arr2[i]) {
      result.push(arr1[i]);
    }
  }

  return result;
}

var arr1 = [1, 2, 3, 4, 5];
var arr2 = [0, 2, 1, 2];
var arr3 = matchingElements(arr1, arr2);

console.log(arr3);

// Output:
// [ 2 ]

答案 1 :(得分:0)

试一试:

<html>
    <head></head>
    <body>
        <script>
            var arr1 = [1,2,3,4,5]; 
            var arr2 = [0,2,3,3]; 
            var arr3 = [];
            function intersection(arr1,arr2){
                len = arr1.length < arr2.length ? arr1.length : arr2.length;
                for(var i=0 ; i<len; i++)
                    if(arr1[i]==arr2[i]){
                        arr3[0] = arr1[i];
                        break;
                    }
                if(arr3.length > 0)
                    alert("intersection is : " + arr3[0]);
                else
                    alert("No intersection");
            }
            intersection(arr1,arr2);
        </script>
    </body>
</html>

答案 2 :(得分:0)

基于对原始问题的评论,我认为@KoPhyoHtet实际上可能正在尝试计算两组的Jaccard index。在这种情况下,以下代码应该有所帮助。 (它依赖于lodash。)

function jaccard(arr1, arr2) {
  return _.intersection(arr1, arr2).length / _.union(arr1, arr2).length;
}

var arr1 = [1, 2, 3, 4, 5];
var arr2 = [0, 2, 1, 3];

// intersection is [1, 2, 3] (length 3)
// union is [0, 1, 2, 3, 4, 5] (length 6)
// Jaccard index should be 3/6 = 0.5

console.log(jaccard(arr1, arr2));

// Output:
// 0.5

答案 3 :(得分:0)

这是最短的版本

const arr1 = [1,2,3,4,5]
const arr2 = [0,2,1,3]
const arr3 = arr1.filter(item => arr2.indexOf(item) > -1)