尝试定义将元素添加到现有数组顶部的函数

时间:2019-08-12 12:46:33

标签: javascript arrays function

我正在学习javascript,需要定义一个函数,该函数会将一个元素添加到数组的顶部(两个参数array和element)。我已经创建了数组,但是当我写出我认为该函数的外观时,我得到的是数字5而不是我插入的元素被添加到数组的顶部。以下是我的代码,您能帮我解决为什么它不起作用吗?我希望它返回顶部带有新元素的数组,而不是只返回数字5。

var chocolateBars = [
  'snickers',  
  'hundred grand', 
  'kitkat', 
  'skittles'
]
 function addElementToBeginningOfArray(array, element) {
   return array.unshift(element)}

  addElementToBeginningOfArray(chocolateBars, 'twix')

1 个答案:

答案 0 :(得分:0)

Unshift返回数组的长度。您应该在单独的一行上返回数组:

var chocolateBars = [
  'snickers',  
  'hundred grand', 
  'kitkat', 
  'skittles'
]
 
function addElementToBeginningOfArray(array, element) {
   array.unshift(element)
   return array
}

// Returns array with new element
console.log(addElementToBeginningOfArray(chocolateBars, 'twix'))

// The original is now modified too
console.log(chocolateBars)

但是请注意,此函数将编辑原始数组。为避免这种情况,您可以创建原始文档的浅表副本,然后立即插入新元素:

var chocolateBars = [
  'snickers',  
  'hundred grand', 
  'kitkat', 
  'skittles'
]
 
function addElementToBeginningOfArray(array, element) {
   return [element, ...array]
}

// Returns new array with added element
console.log(addElementToBeginningOfArray(chocolateBars, 'twix'))

// Original is not modified
console.log(chocolateBars)

一个好的现代解决方案可以用一行编写:

var chocolateBars = [
  'snickers',  
  'hundred grand', 
  'kitkat', 
  'skittles'
]
 
const addElementToBeginningOfArray = (a, e) => [e, ...a]

console.log(addElementToBeginningOfArray(chocolateBars, 'twix'))