我想将我的数组分成两半并将其结果保存在另一个数组中,但不会影响原始数据。
所以,如果我有[1,3,9,5]
,我想将其保存在变量中。
然后我会创建新数组并复制其中的初始数组。
然后我将这个新阵列分成两半。
最后的含义我会有2个像这样的数组
initial [1,3,9,5] halved [1,3]
问题是初始的一个也是分裂的,我得到2个数组,每个数组都保持一半的值。
var initial = [1,3,9,5];
var half = initial;
half = half.splice(0, Math.floor(half.length / 2));
console.log(initial);
console.log(half);
答案 0 :(得分:1)
检查以下内容:
选项1 创建初始数组的副本
<div class="hideMe1">
I'll fade first
</div>
<div class="hideMe2">
My turn to fade
</div>
@keyframes hideMe{
0% {opacity :1;}
10% {opacity :0;}
90% {opacity: 0;}
100% {opacity: 1}
}
允许创建var initial = [1,3,9,5];
var half = [].concat(initial);
half = half.splice(0, Math.floor(half.length / 2));
console.log(initial);
console.log(half);
数组的副本。
选项2 不要修改初始数组,而是使用[].concat(initial)
方法
initial
答案 1 :(得分:1)
你可以这样做
var initial = [1,3,9,5];
var half = initial.slice(0, Math.floor(initial.length / 2));
console.log(initial);
console.log(half);
答案 2 :(得分:1)
var half = initial;
将initial
的参考复制到half
。它们是相同的阵列。
使用var half = initial.slice();
复制数组的值,或者使用
var initial = [1, 3, 9, 5];
var half = initial.slice(0, Math.floor(initial.length / 2));
答案 3 :(得分:1)
分割数组时,有两种原型方法:
var half = initial.slice(0,Math.floor(half.length / 2));
只需将您使用拼接替换为切片,就可以了。
有关详细信息,我邀请您咨询优秀的MDN document for Array.splice和MDN document for Array.slice
答案 4 :(得分:0)
执行var half = initial;
时,您只传递引用,而不是复制数组。
您需要使用其他方法来复制数组,例如:
var half = initial.slice();