我正在学习javascript,需要定义一个函数,该函数会将一个元素添加到数组的顶部(两个参数array和element)。我已经创建了数组,但是当我写出我认为该函数的外观时,我得到的是数字5而不是我插入的元素被添加到数组的顶部。以下是我的代码,您能帮我解决为什么它不起作用吗?我希望它返回顶部带有新元素的数组,而不是只返回数字5。
var chocolateBars = [
'snickers',
'hundred grand',
'kitkat',
'skittles'
]
function addElementToBeginningOfArray(array, element) {
return array.unshift(element)}
addElementToBeginningOfArray(chocolateBars, 'twix')
答案 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'))