我正在嘗試在數(shù)組中插入新的鍵,這些鍵基本上是從父數(shù)組中提取的。我找不到僅僅通過將新密鑰插入到提取的數(shù)組中就會(huì)導(dǎo)致商店內(nèi)的主數(shù)組發(fā)生變化的原因。
這是我嘗試在自定義數(shù)組中添加新鍵值對(duì)的方法
const array = [{"integrationTypeId":1,"type":"aptus","fields":[{"name":"base_url"},{"name":"hash_key"}]}] function runArray(){ let connectorObject= {} let newArray if (array.length > 0) { connectorObject = array.find( (c) => c.integrationTypeId === 1, ); newArray = connectorObject.fields newArray !== undefined && newArray.map((object) => { return Object.assign(object, { inputType: "textField", value: object.name, }) }) } console.log(JSON.stringify(newArray)) console.log(JSON.stringify(array)) } runArray();
以下是輸出:
控制臺(tái) 1.:newArray
[{"name":"base_url","inputType":"textField","value":"base_url"},{"name":"hash_key","inputType":"textField","value":"hash_key"}]
控制臺(tái) 2.:父數(shù)組
[{"integrationTypeId":1,"type":"aptus","fields":[{"name":"base_url","inputType":"textField","value":"base_url"},{"name":"hash_key","inputType":"textField","value":"hash_key"}]}]
是什么讓它用 newArray 值進(jìn)行修改。
甚至嘗試過: newArray.map(obj => ({ ...obj, [inputType]: "textField"}));
重要的是要知道 Javascript 數(shù)組和對(duì)象是通過引用傳遞的。這意味著如果您修改數(shù)組或?qū)ο螅鼘⒎从吃趯?duì)該數(shù)組或?qū)ο蟮乃幸弥小?/p>
在這種情況下,數(shù)組-->對(duì)象-->數(shù)組-->對(duì)象嵌套過多。因此,在提取時(shí)請(qǐng)確保創(chuàng)建一個(gè)新的數(shù)組或?qū)ο?。這里我使用 ES6 ...
語法來創(chuàng)建一個(gè)新的數(shù)組/對(duì)象。只需使用 =
即可復(fù)制其引用,從而反映更改。
下面的代碼尚未優(yōu)化,但我希望您明白這一點(diǎn)。
const array = [ { integrationTypeId: 1, type: "aptus", fields: [{ name: "base_url" }, { name: "hash_key" }], }, ]; function runArray() { let connectorObject = {}; let newArray = []; if (array.length > 0) { connectorObject = { ...array.find((c) => c.integrationTypeId === 1), //Creating brand new copy of array object fields: [...array.find((c) => c.integrationTypeId === 1).fields], //Creating brand new copy of fields array }; newArray = connectorObject.fields.map((field) => { //Creating brand new copy of fields array object return { ...field }; }); newArray.map((object) => { Object.assign(object, { inputType: "textField", value: object.name, }); }); } console.log(JSON.stringify(newArray)); console.log(JSON.stringify(array)); } runArray();
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)