2014-11-03 159 views
0

所以我試圖用javascript實現合併排序,我遇到的問題是我無法用排序後的子元素中的值替換原始數組數組,陣列(一個或多個)。用另一個數組中的特定元素替換數組元素

我已經看到了類似的問題以下解決方案:

var arr = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']; 
var anotherArr = [ 1, 2, 3 ]; 

Array.prototype.splice.apply(arr, [0, anotherArr.length].concat(anotherArr)); 

console.log(arr); 

輸出:

[ 1, 2, 3, 'd', 'e', 'f', 'g', 'h', 'i', 'j'] 

然而,這裏ALLanotherArr的元素被投入arr

有我的方式來指定我要插入到arr替代的元素?

+0

? – oscarvady 2014-11-03 14:32:32

+0

原始數組將被子數組中的元素覆蓋。但只能使用該子數組的指定元素。 – ZeroDarkThirty 2014-11-03 14:39:12

+0

@ZeroDarkThirty請確定未知數,即如何描述應使用子陣列的哪些指定元素以及原始數組的哪一部分。 – Alnitak 2014-11-03 15:20:53

回答

-1

假設你只是想覆蓋元件1和3

var arr = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']; 
var anotherArr = [ 1, 2, 3 ]; 
var overwrite = [true, false, true]; 

for(var i = 0; i < anotherArr.length; i++){ 
    if(overwrite[i] == true) arr[i] = anotherArr[i]; 
} 

alert(arr); 

輸出:什麼是你想要的輸出arr = [ '1', 'b', '3', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];

鏈接fiddle

+0

嗯,這工作,但在一個非常迂迴的方式,只有當我指定一個子數組元素爲'null'。在我的子數組中沒有任何'null'元素。 – ZeroDarkThirty 2014-11-03 14:52:40

+0

如果你現在使用一個輔助數組? – oscarvady 2014-11-03 14:57:51

+0

對不起,我不明白你在說什麼。你能否詳細說明一下?謝謝。 – ZeroDarkThirty 2014-11-03 15:00:51

相關問題