2017-06-08 75 views
1

在我使用Javascript中的reduce方法時,我不明白爲什麼當我使用「current」或「array [index]在我的if語句(在我的降低方法)。在下一個函數中使用.reduce()方法(Javascript)

不是當前和數組[索引]同樣的事情?

function pairwise(arr, arg) { 

    return arr.reduce(function(acc,current, index, array){ 
    for(var i=index+1;i<array.length; i++){ 
     if(current+array[i]===arg){ 
     acc += index+i; 
     array[index]=array[i]=NaN; 
     } 
    } 

    return acc; 
    }, 0) 

    } 

謝謝!!

+0

請爲數組添加一些數據,並調用函數和你期望得到的。和你有什麼。 –

+0

是的,我很抱歉,我的意思是:不是當前和陣列[指數]內部可互換if(current + array [i] === arg)?我得到了一個不同的結果,不管我把「current」還是array [index]都是奇怪的,因爲對我來說它們都代表着同樣的事情。沒有數據的 –

+0

,你期望什麼,很難猜測,你想要什麼,什麼不工作。 –

回答

2

你在這一行是什麼意思?

array[index]=array[i]=NaN; 

如果分配給array[index],那麼您正在修改該數組。
如果分配給current,那麼只需覆蓋本地變量current,但這對該值所在的數組沒有任何持久影響。

let arr = [1, 2, 3], 
    current = arr[0]; 

current = 42; // obviously does not modify arr 
arr[0] = 42; // obviously modifies arr 
+0

沒有抱歉,我的意思是:不是當前和陣列[索引]內部可互換if(current + array [i] === arg)?我得到了一個不同的結果,不管我把「current」還是array [index]都是奇怪的,因爲對我來說它們都代表着同樣的事情。 –

相關問題