Первое значение массива как имя ключа и последнее как значение JavaScript? - PullRequest
1 голос
/ 08 мая 2020

Я начинающий студент-программист, и у меня есть некоторые сомнения относительно того, как сосредоточить внимание и понять это упражнение.

Кто-нибудь может объяснить мне, почему это упражнение логично?

У меня есть массив вот так: ['Queen', 'Elizabeth', 'Of Hearts', 'Beyonce'] и мне нужен этот результат: {Queen: 'Beyonce'}

Я хочу, чтобы функция возвращала следующее:

  1. первый элемент массива как ключ объекта
  2. последний элемент массива как значение этого ключа. Я делаю ключ var в массиве, а затем al oop через массив

Кто-то рекомендовал мне сделать это следующим образом, но я не очень хорошо понимаю, как здесь работают 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);

Ответы [ 3 ]

1 голос
/ 08 мая 2020

Короче говоря, эти методы изменяют исходный массив (удаляя первый или последний элемент), но также возвращают элемент, который был удален.

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);
0 голосов
/ 08 мая 2020

Массив похож на список упорядоченных элементов, и мы можем получить доступ к этому списку, используя индекс, и индекс также начинается с 0. Поэтому, если я хочу получить доступ к 4-му элементу списка, я попытаюсь получить доступ к списку используя индекс 3.

Теперь вернемся к списку, который мы рассматриваем здесь, то есть ['Queen', 'Elizabeth', 'Of Hearts', 'Beyonce'] и скажем, мы называем это в качестве «массива» в качестве параметра функции мы получаем следующее -

массив равен ['Queen', ' Elizabeth ',' Of Hearts ',' Beyonce ']

array [0] равно ' Queen '

array [1] равно 'Elizabeth'

array [2] равно 'Of Hearts'

array [3] равно 'Beyonce'

длина массива равно 4 (дает количество элементов в массиве)

Теперь наша цель - создать словарь или объект вроде {'Queen': 'Beyonce'} . И, если мы попытаемся понять функцию построчно.

  1. let result = new Object(); - Он создает пустой объект, скажем, как пустой словарь без ключа, пары значений. Проще говоря, result = {}
  2. result[array[0]] = array[array.length-1]; - это строка, в которой происходят все маги c. Итак, сначала мы пытаемся оценить левую часть result[array[0]] и получаем result['Queen']. Для правой стороны у нас есть array[array.length-1]. Итак, если мы его сломаем, array[array.length-1] => array[4-1] => array[3] => 'Beyonce'. И, наконец, если объединить две стороны, мы получим result['Queen'] = 'Beyonce', что создаст объект {'Queen': 'Beyonce'}.

В заключение, метод не выполняет итерацию или l oop по списку. В этом методе нет сдвига или удаления. Он обращается к списку, используя индекс массива. Во-первых, он создает пустой объект. Затем он создает запись в объекте, используя первый элемент списка в качестве ключа и последний элемент в качестве значения.

0 голосов
/ 08 мая 2020

Вместо того, чтобы изменять исходный массив, вы можете сделать это так:

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);
...