我正在学习Javascript的第三周,得到的作业给我带来了一些麻烦。
我应该创建一个名为mix的函数,该函数接受两个数组中的两个参数。调用该函数时,应返回一个新列表,该列表在前两个数组之间交替(请参见下面的示例)。
这是关于数组和循环的,所以我需要使用它们。另外,我只允许使用数组函数:推,弹出,移位和取消移位。
我的老师说这是使用while循环解决的最简单的方法。
mix([], []) === []
mix([2, 4], []) === [2, 4]
mix([], [8, 16]) === [8, 16]
mix([1, 3, 5], [2, 4]) === [1, 2, 3, 4, 5]
mix([10, 9], ['a', 'b', 'c']) === [10, 'a', 9, 'b', 'c']
在获得关于最简单的while循环的提示之前,我开始尝试使用for循环。我在这里遇到的问题是,只要数组的长度相同,它就可以工作,但是我很难理解如何解决这个问题,因此数组可以具有不同的长度。
因为我想学习,所以我希望指针指向正确的方向,而不是整个答案!
请原谅我混乱的初学者代码:)
function mix(array1, array2) {
let newList = [];
for(i = 0; i < array1.length || i < array2.length; i++) {
if(array1.length > 0 || array2.length > 0){
newList.push( array1[i] );
newList.push( array2[i] );
}
}
return newList;
}
mix([10, 9],['a', 'b', 'c'])
我还希望找到一个指针,以了解while循环如何变得更容易,以及我将如何使用它。
提前致谢!
要解决当前的代码,你需要单独检查是否i < array1.length
(如果是的话,推array1[i]
),并且也做同样的测试为array2
:
function mix(array1, array2) {
let newList = [];
for (let i = 0; i < array1.length || i < array2.length; i++) {
if (i < array1.length) {
newList.push(array1[i]);
}
if (i < array2.length) {
newList.push(array2[i]);
}
}
return newList;
}
console.log(mix([10, 9], ['a', 'b', 'c']));
确保使用i
with声明let i
,否则您将隐式创建一个全局变量(或在严格模式下引发错误)。
要while
循环执行此操作,我将在两个数组都具有长度的情况下循环,并从它们中shift
删除(删除[0]
第一个项目):
function mix(array1, array2) {
const newList = [];
while (array1.length || array2.length) {
if (array1.length) {
newList.push(array1.shift());
}
if (array2.length) {
newList.push(array2.shift());
}
}
return newList;
}
console.log(mix([10, 9], ['a', 'b', 'c']));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句