在 JavaScript 中,Map
数据结构允许你将任何类型的值作为键和值存储。如果你想要在遇到相同的键时,将值动态地添加到数组中,可以使用以下方法:
- 检查是否存在该键:如果存在,就获取当前的数组并添加新元素;如果不存在,就创建一个新的数组并初始化它。
以下是示例代码:
const aclMap = new Map();
// 函数用于添加值
function addToMap(key, value) {
// 检查 map 中是否已有该 key
if (aclMap.has(key)) {
// 如果有,获取现有的数组,并推入新值
const existingArray = aclMap.get(key);
existingArray.push(value);
} else {
// 如果没有,创建新的数组并初始化
aclMap.set(key, [value]);
}
}
// 示例数据
const jsonObj = [
{ ip: '192.168.1.1', port: 8080, scheme: 'http', proxyvalue: 'value1' },
{ ip: '192.168.1.2', port: 9090, scheme: 'https', proxyvalue: 'value2' },
{ ip: '192.168.1.1', port: 7070, scheme: 'http', proxyvalue: 'value3' } // 重复 IP 示例
];
// 遍历 jsonObj 并将其添加到 Map 中
for (let i = 0; i < jsonObj.length; i++) {
const entry = {
port: jsonObj[i].port,
scheme: jsonObj[i].scheme,
proxyvalue: jsonObj[i].proxyvalue,
};
// 使用 JSON.stringify() 将对象转换为字符串,以便将整个对象存储为一个值(如需要)
addToMap(jsonObj[i].ip, entry);
}
// 打印结果以查看 Map 内容
console.log(aclMap);
注意事项:
- 在这个例子中,每当调用
addToMap
函数时,它会检查给定的key
是否已经存在于aclMap
中。 - 如果存在,它会从
Map
中检索现有数组,然后将新元素推入其中。 - 如果不存在,则创建一个新的数组,并用初始值填充它。
运行上述代码后,你会发现对于相同的 IP 地址(例如 '192.168.1.1'
),所有相关条目都会被收集到同一个数组中。
内容由零声教学AI助手提供,问题来源于学员提问