Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript函数的返回值出错_Javascript_Arrays - Fatal编程技术网

JavaScript函数的返回值出错

JavaScript函数的返回值出错,javascript,arrays,Javascript,Arrays,这是我试图解决的JavaScript(设置数组元素)练习: 编写一个函数setFirstElement,该函数接受数组和任意变量。变量应作为数组中的第一个元素插入。应该返回数组。setFirstElement([1,2],3)应返回[3,2] 这是我的代码: function setFirstElement(a,b){ var result=[b,a[1]]; return result; } 这是我得到的错误: setFirstElement([],1)不返回[1],

这是我试图解决的JavaScript(设置数组元素)练习:

编写一个函数setFirstElement,该函数接受数组和任意变量。变量应作为数组中的第一个元素插入。应该返回数组。setFirstElement([1,2],3)应返回[3,2]

这是我的代码:

   function setFirstElement(a,b){
   var result=[b,a[1]];
   return result;
   }
这是我得到的错误:

setFirstElement([],1)不返回[1],但返回[1,未定义]


这是因为您试图从一个空的数组中访问第二个元素,即
a[1]
,它是
未定义的
。您可以采用这种方式来处理现有代码

函数setFirstElement(a,b){
var结果;
如果(a&&!a.length==0){
结果=[b,a[1];
}否则{
结果=[b];
}
返回结果;
}
log(setFirstElement([],1));

log(setFirstElement([1,2],3))您的函数返回[1,未定义],因为数组a中的第二个元素未定义。 Javascript数组不是这样工作的。我建议您使用if语句来检查数组a是否比1短

function setFirstElement(a,b) {
    if (a.length < 2) {
        return [b];
    } else {
        return [b,a[1]];
    }
}
函数setFirstElement(a,b){
如果(a.长度<2){
返回[b];
}否则{
返回[b,a[1];
}
}

您的代码非常混乱

首先,如果将另一个数组添加到一个数组中,最终将得到[1、[3]]。 然后不要忘记数组从0开始,所以1是第二个元素。 第三,正如前面指出的,您需要在第一轮检查数组是否为空

下面是一个工作示例:

函数setFirstElement(数组,el){
如果(array.length>0){
数组。shift();
返回[el,…数组];
}否则{
返回[el];
}
}
log(setFirstElement([],1));
log(setFirstElement([2,3,4,1]);

log(setFirstElement(['b','c'],'a')只需将索引0设置为参数b的值

函数setFirstElement(a,b){
a[0]=b;
返回a;
}
var res=setFirstElement([1,2],3];

控制台日志(res)有一种比构造新数组更简单的方法

说明书上说

变量应作为数组中的第一个元素插入。应该返回数组

这听起来更像是您应该修改数组参数,而不是创建一个新数组,这更容易。像这样:

函数setFirstElement(a,b){
a[0]=b;
返回a;
}
var x=setFirstElement([1,2],3];
控制台日志(x);
变量y=setFirstElement([],1);
控制台日志(y)