gpt4 book ai didi

javascript - ES6 Map 中的所有对

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:12:20 25 4
gpt4 key购买 nike

在 ES6 中,给定一个 Map,如何访问顺序不重要的值对?

如果这是数组,我会这样做:

let arr = ["a", "b", "c", "d"];

for (let i=0; i < arr.length; i++)
for (let j=i+1; j<arr.length; j++)
console.log(`${arr[i]},${arr[j]}`);

对于 Google map ,我一直在努力寻找一种方法来以高效而优雅的方式完成类似的事情。迭代器看起来可以解决问题,但我假设它们的行为类似于 C++ 标准库迭代器,其中一个迭代器可以克隆为独立的迭代器。

我想到的最好的是:

var map = new Map([[0, "a"],[1, "b"],[2, "c"],[3, "d"]]);

for (let key of map.keys()) {
let log_away = false;

for (let other_key of map.keys()) {
if (log_away)
console.log(`${map.get(key)},${map.get(other_key)}`);
else
log_away = (key === other_key);
}

这相当简洁,但必须访问所有对,无论它们是否会被使用,效率都非常低。更糟糕的是,如果要尝试将其适应包含大型对象的 Set,最后键的比较必须是值的比较,这可能会非常昂贵。

最佳答案

您可以调用 values() 方法,然后对结果调用 Array.from() 以获得所有值的数组。然后您就可以像处理数组一样执行此操作。

const map = new Map([[0, "a"],[1, "b"],[2, "c"],[3, "d"]])

const values = Array.from(map.values())
for (let i = 0; i < values.length; i++)
for (let j = i + 1; j < values.length; j++)
console.log(`${values[i]},${values[j]}`)

关于javascript - ES6 Map 中的所有对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40064146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com