gpt4 book ai didi

javascript - 如何在 Jint 中枚举字典<>

转载 作者:搜寻专家 更新时间:2023-11-01 05:28:12 28 4
gpt4 key购买 nike

我有一个 .NET 通用字典<>,我想将它传递给我在 Jint 中运行的 JavaScript 函数。

Jint 不会像对待 JavaScript 对象一样对待 .NET 字典,后者可以像对待字典一样对待。您可以访问对象的 .NET 属性和方法,但不能访问扩展方法。

因此,虽然我可以获得字典键的计数,但我无法枚举它或对其调用 ToArray()。

我可以使用 dict[key] 从字典中读取值,但在这种情况下我事先不知道键。

如何枚举键或获取 .NET 通用词典中的所有条目?

我愿意在传递字典之前对字典做一些事情或转换它,或者弄清楚如何在 JavaScript 中完成它。我宁愿不必单独传递一组键。这是在另一个数据结构中,对每个字典都这样做会使它变得更复杂,但如果我找不到其他解决方案,这是我正在考虑的选项之一。

我宁愿远离使用动态。过去大量使用时,我遇到过内存泄漏的问题。

最佳答案

我刚刚遇到了同样的问题,并通过使用字典上的枚举器解决了这个问题:

// Javascript in Jint:
var enumerator = myDictionary.GetEnumerator();
while (enumerator.MoveNext()) {
var key = enumerator.Current.Key;
var value = enumerator.Current.Value;
// do stuff with key and/or value
}

如果您对两者都不感兴趣,您可以采用同样的方式迭代 myDictionary.Keys 或 myDictionary.Values。

注意:您提到您可以使用 dict[key]。至少对于我来说,我有一个复杂的 struct 作为键,这是行不通的。显然 Jint 不能很好地处理通用索引器并抛出:System.InvalidOperationException: No matching indexer found。

关于javascript - 如何在 Jint 中枚举字典<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46110037/

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