首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数学划出

数学划出
EN

Stack Overflow用户
提问于 2015-02-03 05:09:53
回答 5查看 68关注 0票数 3

我希望在概率上玩一玩,如果是大数字的话,这会涉及到很多。为了节省计算时间,我正在考虑让计算机划掉术语,就像你在常规数学中所做的那样。例如:

(2*3*7*3) / (3*2*3*3) 可以简化为7/3

如果我要创建Javascript函数并将包含乘法数的两个数组传递出去,我将如何做到这一点?

我只想说清楚:

如果我传入[3, 4, 6, 4][4, 7, 3, 2],它将返回两个数组:[4, 6][7, 2]

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-02-03 06:15:57

如果您不需要取消超出确切数量的数据,则应该这样做:

代码语言:javascript
复制
var x = [3, 4, 6, 4];
var y = [4, 7, 3, 2];
for(var i in x)
{
  for(var j in y)
  {
    if(x[i]==y[j])
    {
      x.splice(i,1);
      y.splice(j,1);
    }
  }
}
console.log(x);
console.log(y);

但如果您有兴趣进一步取消,请采取以下措施:

代码语言:javascript
复制
var x = [3, 4, 6, 4];
var y = [4, 7, 3, 2];
for(var i in x)
{
  for(var j in y)
  {
    if(x[i]%y[j] == 0)
    {
      if(x[i]/y[j] > 1)
      {
        x[i] = x[i]/y[j];
      }
      else{
        x.splice(i,1);
      }
      y.splice(j,1);
    }
  }
}

console.log(x);
console.log(y);
票数 2
EN

Stack Overflow用户

发布于 2015-02-03 06:06:45

是,或:

代码语言:javascript
复制
var arr1 = [5,2,3,7,8];
var arr2 = [3,5,2,3];
arr1.sort();
arr2.sort();
var i = 0, j = 0;
while (i < arr1.length && j < arr2.length) {
    if (arr1[i] < arr2[j]) {
        ++i;
    } else if (arr1[i] > arr2[j]) {
        ++j;
    } else {
        arr1.splice(i, 1);
        arr2.splice(j, 1);
    }
}
alert(arr1.toString() + "/" + arr2.toString());

更新:显示分数

代码语言:javascript
复制
function prod(arr) {
    var res = 1, i;
    for (i = 0; i < arr.length; ++i) {
        res *= arr[i];
    }
    return res;
}

alert(prod(arr1) + "/" + prod(arr2));
票数 2
EN

Stack Overflow用户

发布于 2015-02-03 06:10:15

另一种方法是使用inArray的一个版本(取自jQuery),然后检查每个元素并根据需要删除元素。我不知道这与仅仅进行计算相比会有多好,但是,在jsPerf上进行测试是值得的。

例如:

代码语言:javascript
复制
removeDuplicates([3, 4, 6, 4], [4, 7, 3, 2]);

function removeDuplicates( array_1, array_2 ) {
    array_1.forEach(function(value, index) {
        var in_array = inArray( value, array_2 );
        if ( in_array !== false ) {
            array_1.splice( index, 1 );
            array_2.splice( in_array, 1 );
        }
    });

    console.log(array_1); // [4, 6]
    console.log(array_2); // [7, 2]
}

// from jQuery
function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i++) {
        if(haystack[i] == needle) return i;
    }
    return false;
}

jsFiddle:http://jsfiddle.net/tj6crcdt/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28291765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档