首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减去两个具有不同索引但值相同的整数

减去两个具有不同索引但值相同的整数
EN

Stack Overflow用户
提问于 2015-04-08 23:28:53
回答 1查看 269关注 0票数 0

给定的函数应该接受任意数量整数的数组。

之后,它应该减去每两个整数从彼此旁边的整数,其中相同的索引。

代码语言:javascript
复制
var ArrayFirst = [4, 34, 6, 1,5];
var ArraySecond = [4,34,6,1,4];

function Find(Arg) {
var ResultArray;
var SecondArray = [];
for (var i = 0; i < Arg.length; i++) {
    var FirsArray;

    for (var j = 0; j < Arg.length; j++) {

        if (Arg.indexOf(Arg[i]) != Arg.indexOf(Arg[j])) {
            console.log(Arg.indexOf(Arg[i]) + 'AND' + Arg.indexOf(Arg[j]));
            FirstArray = Arg[i] - Arg[j];
            console.log(FirstArray);
            if (FirstArray >= 0) {

                SecondArray.push(FirstArray);
            }
        }
    }
    //console.log(SecondArray);
}
ResultArray = Math.min.apply(this, SecondArray);
console.log(ResultArray);
return ResultArray;
}

因此,在调试之后,我发现函数Find适用于ArrayFirst,但不适用于ArraySecond

问:当Array有两个具有相同值的整数时,为什么函数不能工作?

已更新

抱歉,伙计们,我没有提供更多细节

任务:创建一个函数,作为结果给出从数组中减去两个整数的和,该和不能减去两个具有相同索引的整数,和不能小于0,最接近0的和将是适当的结果。

例子: 4,6,3,56,4 -6,4-6,4-3. 4-4,然后6-4,6-3.6-4.所以结果是0,因为4-4和是0。

一些暗示

首先,我认为这可能与数组上的操作有关,但后来我使用了应用和调用参数。

代码语言:javascript
复制
  if (Array.prototype.indexOf.apply(arguments[0],[arguments[0][i]]) !== Array.prototype.indexOf.apply(arguments[0],[arguments[0][j]])) {

            FirstArray = arguments[0][i] - arguments[0][j];
            if (FirstArray >= 0) {

                SecondArray.push(FirstArray);
            }
        }
    }

但是仍然不起作用,我试着用对论点的解决办法,也不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-08 23:58:11

首先,也是最重要的,避免使用数组作为变量名,因为对于大多数浏览器来说,它会导致意外的行为。

我认为还需要将函数中的两个数组作为参数传递,以便进行比较。

不需要找到索引i的元素索引,i本身就是一个索引。

代码语言:javascript
复制
Array.indexOf(Array[i]) === i

下面是您可能需要的一个示例:

代码语言:javascript
复制
// it is important for the "array" value to start with lower case symbow, because JavaScript is case sensitive language and it already has object called "Array"
var array = [4, 6, 3, 56, 4];

function find(array)
{
    // because we are surching for the minimum, the variable that will hold it needs to have the largest possible variable at the begining
    var min = Number.MAX_VALUE;

    for (var i = 0 ; i < array.length; i++)
    {
        for (var j=0 ; j < array.length; j++)
        {
            if (i != j)
            {
                var sum = array[i] - array[j];
                // if it sum is greater than zero and it is the smallest sum so far we will save it in "min"
                if (sum >= 0 && min > sum)
                {
                    min = sum;
                }
            }
        }
    }
    // retun the smallest sum we've encountered
    return min;
}


console.log(find(array));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29527110

复制
相关文章

相似问题

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