gpt4 book ai didi

javascript - 在 Immutable.js 中深入查找

转载 作者:行者123 更新时间:2023-11-30 14:56:22 25 4
gpt4 key购买 nike

我希望能够在 Immutable.js 中找到深层嵌套值的 keyPath。我如何填写此函数 deepFind 以获得我想要的内容?

const map = Immutable.fromJS({
a: {
a1: 1,
b1: 2
},
b: {
b1: 3
b2: 4,
b3: 5
}
});

function deepFind(map, value) {
/* ??? */
}

deepFind(map, 4); // returns ['b', 'b2']

最佳答案

看起来没有任何内置方法可以执行此操作,因此我决定采用深度优先搜索。我使用 .toKeyedSeq() 搜索具有相同代码的所有集合类型。

注意:如果您的集合包含它们自己,此函数将永远挂起。

import Immutable from 'immutable';

function deepFind(root, value, path = Immutable.List()) {
if (root === value) {
return path;
}

if (!Immutable.isImmutable(root)) {
// this is a leaf node, and it's not the value we want.
return undefined;
}

for (const [key, child] of root.toKeyedSeq()) {
const result = deepFind(child, value, path.push(key));
if (result) {
return result;
}
}

// no path is found
return undefined;
}

关于javascript - 在 Immutable.js 中深入查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47212381/

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