【问题标题】:First value of an array as a Key name and last one as a value JavaScript?数组的第一个值作为键名,最后一个作为值 JavaScript?
【发布时间】:2020-05-08 11:53:24
【问题描述】:

我是一名编程初学者,对于如何集中注意力和理解这个练习有些疑问。

谁能解释我面对这个练习的逻辑?

我有一个这样的数组:['Queen', 'Elizabeth', 'Of Hearts', 'Beyonce'] 我想要这个结果:{ Queen : 'Beyonce' }

我想让函数返回以下内容:

  1. 数组的第一个元素作为对象的键
  2. 数组的最后一个元素作为该键的值。我在数组中做一个 var 键,然后在数组中循环

有人推荐我这样做,但我不太明白 shift 和 pop 在这里如何工作,因为 shift 删除数组的第一个值并弹出最后一个。

谁能帮帮我?

function transformFirstAndLast(array) {
  // your code here
  let myobj={}
  myobj[array.shift()] = array.pop();
  
  console.log(myobj);
}


var output = transformFirstAndLast(['Queen', 'Elizabeth', 'Of Hearts', 'Beyonce']);
console.log(output);

【问题讨论】:

  • 没有shift(),也没有pop()。你能详细说明一下,究竟是什么让你感到困惑?

标签: javascript arrays object key for-in-loop


【解决方案1】:

简而言之,这些方法会改变原始数组(删除第一个或最后一个元素),但也会返回被删除的元素。

arr.shift(): 解释:

(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift)

const myArr = ['Queen', 'Elizabeth', 'Of Hearts', 'Beyonce'];

//remove the first element and save it in the variable firstElem
const firstElem = myArr.shift();

console.log(firstElem); //output: "Queen"
console.log(myArr); //output: "['Elizabeth', 'Of Hearts', 'Beyonce']"

arr.pop(): 解释:

(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop)

const myArr = ['Queen', 'Elizabeth', 'Of Hearts', 'Beyonce'];

//remove the last element and save it in the variable firstElem
const lastElem = myArr.pop();

console.log(lastElem); //output: "Beyonce"
console.log(myArr); //output: "['Queen', 'Elizabeth', 'Of Hearts']"

所以,为了让您的示例更清楚,请查看以下稍作修改的代码:

function transformFirstAndLast(array) {
  // your code here
  let myobj={}
  const firstElem = array.shift();
  const lastElem = array.pop();
  myobj[firstElem] = lastElem
  
  //console.log(myobj);
  return myobj;
}


var output = transformFirstAndLast(['Queen', 'Elizabeth', 'Of Hearts', 'Beyonce']);
console.log(output);

【讨论】:

【解决方案2】:

除了改变原始数组,你可以这样做:

function transformFirstAndLast(array) {
  // your code here
  let myobj={};
  myobj[array[0]] = array[array.length - 1];
  
  console.log(myobj);

}


var output = transformFirstAndLast(['Queen', 'Elizabeth', 'Of Hearts', 'Beyonce']);
console.log(output);

【讨论】:

    【解决方案3】:

    数组就像一个有序项目的列表,我们可以通过索引来访问这个列表,索引也是从0开始的。所以如果我想访问列表的第4个项目,我会尝试访问列表通过使用 3 的索引。

    现在,回到列表,我们在这里考虑,即 ['Queen', 'Elizabeth', 'Of Hearts', 'Beyonce'] 并说,我们将其命名为“数组”作为函数的参数,我们得到以下 -

    数组 等于 ['Queen', 'Elizabeth', 'Of Hearts', 'Beyonce']

    array[0] 等于 'Queen'

    数组[1] 等于 'Elizabeth'

    数组[2] 等于 'Of Hearts'

    数组[3] 等于 '碧昂丝'

    array.length 等于 4(给出数组有的项目数)

    现在,我们的目标是创建像 {'Queen': 'Beyonce'} 这样的字典或对象。而且,如果我们尝试逐行理解函数。

    1. let result = new Object(); - 它创建一个空对象,比如没有键、值对的空字典。简单来说,result = {}
    2. result[array[0]] = array[array.length-1]; - 这是所有魔法发生的地方。所以,首先,我们尝试评估左侧result[array[0]],我们得到result['Queen']。对于右侧,我们有array[array.length-1]。所以如果我们打破它, array[array.length-1] => array[4-1] => array[3] => 'Beyonce'。最后,如果将两者结合起来,我们会得到result['Queen'] = 'Beyonce',它会创建一个对象{'Queen': 'Beyonce'}

    总而言之,该方法不会迭代或循环列表。此方法没有移位或删除。它使用数组的索引访问列表。首先,它创建一个空对象。然后它通过使用列表的第一项作为键和最后一项作为值在对象中创建一个条目。

    【讨论】:

    • 谢谢@Nafiz-Ahmed
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多