我正在尝试在数组中插入新的键,这些键基本上是从父数组中提取的。我找不到仅仅通过将新密钥插入到提取的数组中就会导致商店内的主数组发生变化的原因。
这是我尝试在自定义数组中添加新键值对的方法
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();
以下是输出:
控制台 1.:newArray
[{"name":"base_url","inputType":"textField","value":"base_url"},{"name":"hash_key","inputType":"textField","value":"hash_key"}]
控制台 2.:父数组
[{"integrationTypeId":1,"type":"aptus","fields":[{"name":"base_url","inputType":"textField","value":"base_url"},{"name":"hash_key","inputType":"textField","value":"hash_key"}]}]
是什么让它用 newArray 值进行修改。
甚至尝试过: newArray.map(obj => ({ ...obj, [inputType]: "textField"}));
Your Answer
1 个回答
重要的是要知道 Javascript 数组和对象是通过引用传递的。这意味着如果您修改数组或对象,它将反映在对该数组或对象的所有引用中。
在这种情况下,数组-->对象-->数组-->对象嵌套过多。因此,在提取时请确保创建一个新的数组或对象。这里我使用 ES6 ... 语法来创建一个新的数组/对象。只需使用 = 即可复制其引用,从而反映更改。
下面的代码尚未优化,但我希望您明白这一点。
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();
Hot Questions
function_exists()无法判定自定义函数
2024-04-29 11:01:01
google 浏览器 手机版显示的怎么实现
2024-04-23 00:22:19
子窗口操作父窗口,输出没反应
2024-04-19 15:37:47
父窗口没有输出
2024-04-18 23:52:34
关于CSS思维导图的课件在哪?
2024-04-16 10:10:18
Hot Tools
vc9-vc14(32+64位)运行库合集(链接在下方)
phpStudy安装所需运行库集合下载
VC9 32位
VC9 32位 phpstudy集成安装环境运行库
php程序员工具箱完整版
程序员工具箱 v1.0 php集成环境
VC11 32位
VC11 32位 phpstudy集成安装环境运行库
SublimeText3汉化版
中文版,非常好用
热门话题
抖音等级价目表1-75
20337
7
20337
7
wifi显示无ip分配
13531
4
13531
4
虚拟手机号接收验证码
11851
4
11851
4
gmail邮箱登陆入口在哪里
8836
17
8836
17
windows安全中心怎么关闭
8420
7
8420
7
热门文章
2025年加密货币市场十大趋势预测:下一个风口在哪里?
2025-11-07
By DDD
币圈土狗项目如何识别?避免归零币的陷阱与风险预警
2025-11-07
By DDD
解决CSS @media 查询优先级与规则覆盖问题的教程
2025-11-07
By DDD
win10字体安装后在软件里找不到怎么办_win10字体安装与识别方法
2025-11-07
By DDD
铁路12306支付失败订单还在吗_铁路12306支付失败订单处理方法
2025-11-07
By DDD





