我对JavaScript真的很陌生,我一直在为尝试进入编码训练营而进行的这段代码苦苦挣扎。我想知道是否有人可以提供帮助?
function putInTheMiddle(array, item) {
for (i = 0; i < 20; i++) {
let Middle = Floor.Math(array / 2);
array.slice(Middle, 0, item);
}
console.log putInTheMiddle([1, 3], 2);
console.log putInTheMiddle([1, 2, 4, 5], 3);
}
我希望它分别以[1, 2, 3]
和[1, 2, 3, 4, 5]
的形式打印数组。
答案 0 :(得分:1)
您不需要循环,该循环将插入20次。
获取值下限的函数是Math.floor()
,而不是Floor.Math()
。
您需要将数组的长度除以2,而不是数组本身。
该函数在适当的位置修改数组,但是如果您希望在调用该函数时能够调用console.log()
,那么它也需要返回该数组。
您需要使用splice()
方法插入数组。 slice()
仅提取数组的一部分而不进行修改。
您需要在console.log()
的参数周围加上括号,这必须在函数定义之外。
function putInTheMiddle(array, item) {
let Middle = Math.floor(array.length / 2)
array.splice(Middle, 0, item);
return array;
}
console.log(putInTheMiddle([1, 3], 2));
console.log(putInTheMiddle([1, 2, 4, 5], 3));
答案 1 :(得分:1)
尝试使用Math.floor
而不是Floor.Math
:
const putInTheMiddle = (array, item) => {
let middleOfArray = Math.floor(array.length / 2);
array.splice(middleOfArray, 0, item);
return array;
}
console.log(putInTheMiddle([1, 3], 2));
console.log(putInTheMiddle([1, 2, 4, 5], 3));
答案 2 :(得分:1)
将Math.floor
与array.length
一起使用-而且,console.log
是一个函数,因此请用括号()
来调用它:
function putInTheMiddle(array, item) {
array.splice(Math.floor(array.length / 2), 0, item);
return array;
}
console.log(putInTheMiddle([1, 3], 2));
console.log(putInTheMiddle([1, 2, 4, 5], 3));
.as-console-wrapper { max-height: 100% !important; top: auto; }
答案 3 :(得分:0)
OP发布的内容需要一些更正,以下代码反映了这些情况:
function putInTheMiddle(arr, item) {
let m = Math.floor((arr.length / 2));
arr.splice(m, 0, item);
return arr;
}
let arr = putInTheMiddle([1, 3], 2);
console.log(`[` + arr.join() + `]`);
let arr2 = putInTheMiddle([1, 2, 4, 5], 3);
console.log(`[` + arr2.join() + `]`);
如果console.log要显示预期的结果,则用户定义的函数在每种情况下都需要返回更改后的数组。请注意,数学是一个对象,floor
是一个方法,就像控制台是一个对象,log
是一个方法一样。该方法需要括号。
为了确定数组的中间索引,您需要找到它的长度,该长度很容易获得,因为它是数组的属性。将长度除以2后,您需要将结果四舍五入为小于或等于其值的最接近的整数,Math.floor()将有助于实现这一目标。
该代码没有使用slice方法,而是使用Array对象的splice方法,该方法非常适合当前的任务。
我同意@Barmar的观点,OP不需要for循环。
最后,我使用Array对象的join()方法将元素连接到字符串中以便于显示,这不会永久影响数组。
答案 4 :(得分:0)
由于您是Java语言的新手,所以我想用简单的方法来回答这个问题。
//array is the array in which you want to insert.
//item is the value which you want to insert.
function putInMiddle(array, item){
let index = Math.floor(array.length/2);
//array.splice is a method which takes 3 arguments.
//argument 1 is the index where you want to make change.
//argument 2 is number of elements you want to remove starting from that index.
//argument 3 is the element that you want to insert at that index.
//In your case no element needs to be removed, hence argument 2 is 0.
array.splice(index,0,item);
return array;
}
//Then you can call the function in console.log if you just want to print the value.
console.log(putInMiddle(['1','2','4','5'],'3'));
//This will print ['1','2','3','4','5']
如果您只想添加1个元素,则上面的代码可以完美地工作。但是,如果您想一次添加多个元素,该怎么办。放松一下,我已经让你对此感到满意。使用以下内容:
function putInMiddle(array, itemArr){
let index = Math.floor(array.length/2);
let numItems = itemArr.length;
for(let i=0; i<numItems; i++){
array.splice(index,0,itemArr[i]);
index++;
}
return array;
}
console.log(putInMiddle(['1','2','6','7'],['3','4','5']));
//This will print ['1','2','3','4','5','6','7']
希望这会有所帮助!