我尝试创建一个复制现有数组sunsetColors
的函数,并将第一个元素更改为“蓝色”。
然后我的sunset
函数应该返回数组的副本。请帮助我了解我需要更改的内容,以使其按预期工作。
var sunsetColors = ["brown", "purple", "pink", "red", "orange", "yellow"]
我在尝试什么:
sunset = () => {
return sunsetColors.splice(0, 1, 'blue');
}
答案 0 :(得分:4)
Splice将返回
包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果未删除任何元素,则返回空数组。 MDN - splice
所以你需要返回集合,而不是拼接的结果
var sunsetColors = ["brown", "purple", "pink", "red", "orange", "yellow"];
sunset = () => {
sunsetColors.splice(0, 1, 'blue');
return sunsetColors;
};
console.log(sunset());

这将使您的功能正常工作"正如所料" (因为它现在返回修改后的数组。但是," splice()方法通过删除现有元素和/或添加新元素来更改数组的内容。"。如果它只是你的意图修改要使用的副本,然后你应该复制然后修改那个副本。
将slice与unshift一起使用是一种很好的方法,@mahan alludes to this in their answer也是如此。
"The slice() method returns a shallow copy of a portion of an array",其中将涵盖复制方面,"the unshift() method adds one or more elements to the beginning of an array"将涵盖插入内容。
它看起来像这样,仍然使用你的箭头功能:
var sunsetColors = ["brown", "purple", "pink", "red", "orange", "yellow"];
sunset = () => {
let arrayCopy = sunsetColors.slice(1);
arrayCopy.unshift('blue');
return arrayCopy;
};
console.log(sunset());

答案 1 :(得分:1)
.slice()
方法克隆数组。
var sunsetColors = ["brown", "purple", "pink", "red", "orange", "yellow"]
function copySunsetColor(list, color) {
var colorList = list.slice();
// Add 'color' at the start of the list
colorList[0] = color
return colorList;
}
console.log(copySunsetColor(sunsetColors, "blue"))

unshift
在列表开头添加项目。
var sunsetColors = ["brown", "purple", "pink", "red", "orange", "yellow"]
function copySunsetColor(list, color) {
var colorList = list.slice();
// Replace the first item of the list with 'color' input
colorList.unshift(color)
return colorList;
}
console.log(copySunsetColor(sunsetColors, "blue"))

答案 2 :(得分:0)
您可以将数组添加到包含blue
的新数组。
sunset = ['blue'].concat(sunsetColors)
var sunsetColors = ["brown", "purple", "pink", "red", "orange", "yellow"]
sunset = ['blue'].concat(sunsetColors.slice(1))
console.log(sunset)

如果您需要更改与第一个元素不同的其他值,您可以使用以下函数:
f = (array, position, value) => { array[position] = value; return array }
var sunsetColors = ["brown", "purple", "pink", "red", "orange", "yellow"]
f = (array, position, value) => { array[position] = value; return array }
console.log(f(sunsetColors, 0, 'blue'))

答案 3 :(得分:0)
试试这个解决方案。首先,它创建一个数组的副本(不是引用),然后它替换第一个元素。
let sunsetColors = ["brown", "purple", "pink", "red", "orange", "yellow"];
copy = (array) => {
let newArray = [...array];
newArray[0] = 'blue';
return newArray;
};