【问题标题】:Return ALL intersections array javascript返回所有交叉点数组javascript
【发布时间】:2015-03-10 17:41:54
【问题描述】:

我当前的代码:

    function intersect(first, second) {
    var temp = [];
    for(var i = 0; i < first.length; i++){
        for(var k = 0; k < second.length; k++){
            if(first[i] == second[k]){
                temp.push( first[i]);
                break;
            }
        }
    }

  return temp;
}

如何更改它以返回所有交叉点索引?

【问题讨论】:

    标签: javascript arrays intersection array-intersect


    【解决方案1】:

    您需要将索引添加到结果中;

    function intersect(first, second) {
      var temp = [];
      for(var i = 0; i < first.length; i++){
        for(var k = 0; k < second.length; k++){
          if(first[i] == second[k]){
            temp.push([i, k]); // push i and k as an array
          }
        }
      }
    
      return temp;
    }
    

    如果您还想选择重复出现的精确交叉点,也请删除 break;

    在此处查找运行示例:http://jsfiddle.net/0tL9sk5w/1

    【讨论】:

    • 如果我错了,请纠正我,但是那个 break 语句不会导致它只返回第二个数组中的第一个匹配项吗?
    • 确实,如果在第二个数组中出现第二个完全相同的交集,则它会被中断过滤,因此必须将其删除。我会相应地编辑它,谢谢。
    • 谢谢...不敢相信我在所有的尝试中都没有抓住这部分 temp.push([i, k])
    【解决方案2】:

    您需要做的就是将两个索引作为一个数组推送

    而不是:

    temp.push( first[i]);
    

    你需要这样做:

    temp.push([i,k]);
    

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多