问题标签 [associative-array]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-flex - Flex 字典排序
我在 flex 中有以下字典,并且我喜欢按值对其进行排序。找不到任何资源。
有任何想法吗 ?我怎样才能按价值排序?
apache-flex - Flex 的烦恼——关联数组
我有一个关联数组,并且在迭代这个数组时,使用 foreach 循环。Flex 正在失去订单。这太烦人了。
为什么会这样?
我怎样才能避免这种情况?
string - 字符串的恒定时间哈希?
关于 SO 的另一个问题提出了一些语言的工具来散列字符串,以便在表中快速查找。这方面的两个示例是 .NET 中的字典<> 和 Python 中的 {} 存储结构。其他语言当然支持这种机制。C++ 有它的映射,LISP 有一个等价物,就像大多数其他现代语言一样。
在对字符串的哈希算法可以在恒定时间内进行的问题的答案中提出了争议,一位拥有 25 年编程经验的 SO 成员声称任何东西都可以在恒定时间内进行哈希处理。我个人的观点是,这不是真的,除非您的特定应用程序在字符串长度上设置了边界。这意味着某个常数 K 将决定字符串的最大长度。
我熟悉 Rabin-Karp 算法,它使用散列函数进行操作,但该算法并没有规定要使用特定的散列函数,作者建议的是 O(m),其中 m 是哈希字符串。
我看到其他一些页面,例如这个(http://www.cse.yorku.ca/~oz/hash.html)显示一些哈希算法,但似乎每个页面都在字符串的整个长度上进行迭代达到它的价值。
从我对该主题的相对有限的阅读来看,似乎大多数字符串类型的关联数组实际上是使用散列函数创建的,该函数在引擎盖下使用某种树进行操作。这可能是指向键/值对中值元素位置的 AVL 树或红/黑树。
即使使用这种树结构,如果我们要保持在 theta(log(n)) 的顺序上,其中 n 是树中元素的数量,我们需要有一个恒定时间的哈希算法。否则,我们有迭代字符串的附加惩罚。即使对于包含许多字符串的索引,theta(m) 会被 theta(log(n)) 黯然失色,但如果我们处于这样一个域中,我们搜索的文本将非常大,我们也不能忽略它。
我知道后缀树/数组和 Aho-Corasick 可以将搜索降低到 theta(m) 以获得更大的内存开销,但我要特别问的是,对于任意长度的字符串是否存在恒定时间哈希方法由其他 SO 成员声明。
谢谢。
actionscript-2 - ActionScript 2:如何在不迭代的情况下确定关联数组中的键数?
是否有一个函数允许我确定 ActionScript 2 关联数组中的键数,而无需遍历该数组?
我希望有一个返回 3 的“o.size”或“o.length”。
谢谢。
java - JAVA myString['name'] = "我的价值"; (就像在 PHP 中一样)
在 PHP 中,我真的经常使用这个:
如何在 JAVA 1.6 中做同样的事情。我试图这样做:
但这给了我一个错误。我想让这个工作,因为我有一个错误列表声明,最好识别:
比一个:
我知道我可以做一个新课程,然后抛出一个对象:
但我更喜欢第一个(与我在 Php 中使用的相同)。
那么,有什么想法吗?
php - 如何遍历关联数组并获取密钥?
我的关联数组:
使用以下代码,$v
填充$arr
的值
我如何获得$arr
's 的钥匙?
c++ - 具有多种键类型的关联数组,可能吗?
我有一大堆对象(可能有 1000 个),我需要将它们存储在一个容器中。我需要能够以两种方式找到特定实例,或者通过其 ID 号(64 位无符号整数)或它的名称(std::string)。通常通过 ID 将是最常见的,但在某些情况下,名称是已知的,而不是 ID。
std::map 可以提供单个 <-> 值,但是我不确定是否有 2 组 std::map 容器,一组用于 Id,另一组用于字符串是这里的最佳方法。
编辑 - 修改代码和错误:
好的,我想我会尝试使用多索引,因为无论如何我都有提升,但是我似乎无法编译它,即使我已经完成它与文档中的完全相同,据我所知:(
测试代码:
和你的平均提升模板错误......
c:\lib\c++\boost\boost\aligned_storage.hpp(69) : 错误 C2872: 'detail' : 不明确的符号
可能是 'boost::detail'
或 'boost::multi_index::detail'
c:\lib\ c++\boost\boost\multi_index\detail\index_node_base.hpp(42) : 请参阅
使用
[
size_=4,
alignment_=4
]
c:\lib\c++\boost\编译的类模板实例化 'boost::aligned_storage' 的参考boost\multi_index\detail\index_node_base.hpp(47) :参见类模板实例化的参考 'boost::multi_index::detail::pod_value_holder'
使用
[
Value=MyClass *
]编译
c:\lib\c++\boost\boost\multi_index\detail\ord_index_node.hpp(582) :参见
使用
[
Value=MyClass *,
Allocator编译的类模板实例化 'boost::multi_index::detail::index_node_base' 的参考=std::allocator
]
c:\lib\c++\boost\boost\multi_index\ordered_index.hpp(137) : 请参见
使用
[
Super=编译的类模板实例化 'boost::multi_index::detail::ordered_index_node' 的参考boost::multi_index::detail::index_node_base>
]
c:\lib\c++\boost\boost\multi_index\ordered_index.hpp(119) :参见
使用
[
KeyFromValue=boost::multi_index::编译的类模板实例化 'boost::multi_index::detail::ordered_index' 的参考const_mem_fun,
Compare=std::less,std::allocator>>,
SuperMeta=boost::multi_index::detail::nth_layer<2,MyClass *,boost::multi_index::indexed_by>,boost::multi_index::ordered_unique >>,std::allocator>,
TagList=boost::mpl::vector0,
Category=boost::multi_index::detail::ordered_unique_tag
]
c:\lib\c++\boost\boost\multi_index_container.hpp(86) :参见
使用
[
KeyFromValue=boost::multi_index::const_mem_fun 编译的类模板实例化 'boost::multi_index::detail::ordered_index' 的参考,
比较=std::less,
SuperMeta=boost::multi_index::detail::nth_layer<1,MyClass *,boost::multi_index::indexed_by>,boost::multi_index::ordered_unique>>,std::allocator>,
TagList=boost::mpl::vector0,
Category=boost::multi_index::detail::ordered_unique_tag
]
c:\projects\bad_angle_studios\brak3\trunk\source\source\server\MyClass.cpp(18) :参见
使用
[
Value=MyClass *,
IndexSpecifierList=编译的类模板实例化 'boost::multi_index::multi_index_container' 的参考boost::multi_index::indexed_by>,boost::multi_index::ordered_unique>>
]
c:\lib\c++\boost\boost\aligned_storage.hpp(53) : 错误 C2872: 'detail' : 模棱两可的符号
可能是 'boost ::detail'
或 'boost::multi_index::detail'
c:\lib\c++\boost\boost\aligned_storage.hpp(56) : 参见类模板实例化 'boost::detail::aligned_storage::aligned_storage_imp: :data_t'正在编译
使用
[
size_=4,
alignment_=4
]
c:\lib\c++\boost\boost\aligned_storage.hpp(69) : 请参阅
使用
[编译的类模板实例化 'boost::detail::aligned_storage::aligned_storage_imp' 的引用
size_=4,
alignment_=4
]
c:\lib\c++\boost\boost\aligned_storage.hpp(73) : 错误 C2872: 'detail' : 不明确的符号
可能是 'boost::detail'
或 'boost::multi_index: :细节'
c:\projects\bad_angle_studios\brak3\trunk\source\source\server\MyClass.cpp(44) : error C2676: binary '[' : 'MyClassList' 未定义此运算符或转换为预定义可接受的类型操作员
php - 如何在重新编号数字键时从数组中删除值
我有一个数组,它可能包含数字键或关联键,或两者兼有:
我希望能够从数组中删除一个项目,重新编号非关联键以保持它们的顺序:
找到要删除的正确元素不是问题,问题在于键。unset
不会对键重新编号,而是array_splice
在offset上工作,而不是在 key 上工作(即:从第一个示例中获取 $x,array_splice($x, 3, 1)
将删除“bar”元素而不是“d”元素)。
php - PHP:获取关联数组的第 n 项
如果你有一个关联数组:
你想访问第二个项目,你会怎么做?$arr[1]
似乎没有工作:
此代码应该产生:
但它只会产生一个空白条目。
javascript - 在 JavaScript 的关联数组中使用整数作为键
当我创建一个新的 JavaScript 数组并使用一个整数作为键时,该数组中直到整数的每个元素都被创建为未定义的。
例如:
将输出 2298 个未定义的和一个“某些字符串”。
我应该如何让 JavaScript 使用 2300 作为字符串而不是整数,或者我应该如何防止它实例化 2299 空索引?