给定的函数应该接受任意数量整数的数组。
之后,它应该减去每两个整数从彼此旁边的整数,其中相同的索引。
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。
一些暗示
首先,我认为这可能与数组上的操作有关,但后来我使用了应用和调用参数。
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);
}
}
}但是仍然不起作用,我试着用对论点的解决办法,也不起作用。
发布于 2015-04-08 23:58:11
首先,也是最重要的,避免使用数组作为变量名,因为对于大多数浏览器来说,它会导致意外的行为。
我认为还需要将函数中的两个数组作为参数传递,以便进行比较。
不需要找到索引i的元素索引,i本身就是一个索引。
Array.indexOf(Array[i]) === i下面是您可能需要的一个示例:
// 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));https://stackoverflow.com/questions/29527110
复制相似问题