2014-11-03 268 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

相关问题