Egg*_*bie 3 javascript arrays foreach
我认为我的问题很容易解决,但作为一个新手,我无法解决这个问题。
\nconst arr1 = [\n { department: "Lebensmittel", id: "id6", product: "Nudeln", status: false },\n { department: "Ceralien", id: "id5", product: "Marmelade", status: false },\n { department: "Ceralien", id: "id3", product: "M\xc3\xbcsli", status: false },\n { department: "Ceralien", id: "id4", product: "Honig", status: false },\n { department: "Molkereiprodukte", id: "id1", product: "Milch", status: false }\n];\n\nlet testArr = [...arr1];\n\ntestArr.forEach(obj => (obj.status = "test"));\n\nconsole.log(arr1, testArr)\nRun Code Online (Sandbox Code Playgroud)\n日志显示,forEach() 函数也应用于 arr1。为什么会这样以及如何保持 arr1 不可变?
\narr1 = [\n { department: "Lebensmittel", id: "id6", product: "Nudeln", status: false },\n { department: "Ceralien", id: "id5", product: "Marmelade", status: false },\n { department: "Ceralien", id: "id3", product: "M\xc3\xbcsli", status: false },\n { department: "Ceralien", id: "id4", product: "Honig", status: false },\n { department: "Molkereiprodukte", id: "id1", product: "Milch", status: false }\n];\n\n testArr = [\n { department: "Lebensmittel", id: "id6", product: "Nudeln", status: false },\n { department: "Ceralien", id: "id5", product: "Marmelade", status: false },\n { department: "Ceralien", id: "id3", product: "M\xc3\xbcsli", status: false },\n { department: "Ceralien", id: "id4", product: "Honig", status: false },\n { department: "Molkereiprodukte", id: "id1", product: "Milch", status: false }\n];\nRun Code Online (Sandbox Code Playgroud)\n
arr1包含对象,因此仅克隆arr1是不够的。您需要克隆太中的对象arr1。
您可以使用.map()函数和扩展运算符创建一个新数组,其中包含 中对象的克隆arr1。
const arr1 = [\n { department: "Lebensmittel", id: "id6", product: "Nudeln", status: false },\n { department: "Ceralien", id: "id5", product: "Marmelade", status: false },\n { department: "Ceralien", id: "id3", product: "M\xc3\xbcsli", status: false },\n { department: "Ceralien", id: "id4", product: "Honig", status: false },\n { department: "Molkereiprodukte", id: "id1", product: "Milch", status: false }\n];\n\nlet testArr = arr1.map(obj => ({...obj}));\n\ntestArr.forEach(obj => (obj.status = "test"));\n\nconsole.log(arr1[0]);\nconsole.log(testArr[0]);Run Code Online (Sandbox Code Playgroud)\r\n.as-console-wrapper { max-height: 100% !important; top: 0; } Run Code Online (Sandbox Code Playgroud)\r\n使用.map()函数还可以更新返回的对象。因此,您可以删除forEach循环,只使用.map()函数来克隆对象,还可以更新status克隆对象的属性。
const arr1 = [\n { department: "Lebensmittel", id: "id6", product: "Nudeln", status: false },\n { department: "Ceralien", id: "id5", product: "Marmelade", status: false },\n { department: "Ceralien", id: "id3", product: "M\xc3\xbcsli", status: false },\n { department: "Ceralien", id: "id4", product: "Honig", status: false },\n { department: "Molkereiprodukte", id: "id1", product: "Milch", status: false }\n];\n\nlet testArr = arr1.map(obj => ({...obj, status: \'test\'}));\n\nconsole.log(arr1[0]);\nconsole.log(testArr[0]);Run Code Online (Sandbox Code Playgroud)\r\n.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)\r\n