Javascript 数组到对象的第一个和最后一个

Javascript 数组到对象的第一个和最后一个,javascript,arrays,object,Javascript,Arrays,Object,我需要获取给定数组中的第一个和最后一个元素,并返回一个对象,其中第一个元素作为键,最后一个元素作为值 这是我的密码: function transformFirstAndLast(array) { array=[]; var object={}; object[key]=value;// make object var key=array[0]; var value=array[array.length-1]; return object;}

我需要获取给定数组中的第一个和最后一个元素,并返回一个对象,其中第一个元素作为键,最后一个元素作为值

这是我的密码:

function transformFirstAndLast(array) {
    array=[];
    var object={}; 
    object[key]=value;// make object
    var key=array[0];
    var value=array[array.length-1];

    return object;} // return object
不管什么原因,它在对象内部返回未定义。我发誓它今天早上起作用了

我一直在尝试:

 function  transformFirstAndLast(array) {
     array=[];
     var object = {}; 
     object[array[0]] = array[array.length-1];}
但是它返回的是未定义的,甚至没有构建对象

您在函数的末尾重新定义数组

此外,在我看来,使用数组和对象作为变量名是个坏主意。仅仅一个输入错误就可能把数组和对象搞乱。这可能会有副作用

下面是一个使用array.shift和array.pop方法的用例的函数

var myArray=['1','2','3','4']; 函数buildObjectarr{ var myObject={}, 键=arr.shift, val=arr.pop; myObject[key]=val; 返回myObject; }
console.logbuildObjectmyArray 使用计算出的属性名称很简单:

function transformFirstAndLast(array) {
  return {[array[0]]: array[array.length - 1]};
}
或者,如果您愿意:

const transformFirstAndLast = ([head, ...tail]) => ({[head]: tail.pop()});

为什么要重新分配数组…?将未定义的键和未定义的值添加到对象。。。然后将值指定给键和值。。。javascript不是这样工作的。。。对象[键]=值;//make对象应该正好在return语句之前,因为如果我不这样做,它会声明它“无法读取未定义的”的属性“0”…相信我,我不希望它出现在那里。在第二个代码块中,在读取传入数组之前,请先对其进行关闭!!因为在这两个代码中,您都将array=[]设置为第一行。。。从而丢失传入阵列!!使用数组和对象作为变量名是一个非常糟糕的主意-怎么会这样?在这样一个通用函数中,数组和对象是非常合理的名称。为什么数组和对象的变量名是错误的?它不是重新定义数组,而是将数组重新分配到一个空数组,本质上是扔掉传递的对象…因为它很容易与原语纠缠在一起,仅仅是一个简单的输入错误。我使用数组和对象作为变量名,因为据我所知,当我反复阅读代码时,它是最直观和可读的。我想,一旦我更熟练一点,我就会更有创造力。我发誓,有时候这个社区太快了,无法做出判断。@amenadiel什么原始人?