【发布时间】:2010-01-11 23:06:15
【问题描述】:
在寻找在 Javascript 中搜索对象数组的最佳方法时(似乎没有迭代 + 比较函数),我来到了 across this post,这似乎是一种非常优雅的方式。
但是我有一些问题:
- Javascript 没有关联数组。这些似乎是一个。什么给了?
- 这似乎是一个非常优雅的解决方案,但它如何与竞争对手相抗衡?
- “传递数组和比较函数” - 表示针对各种搜索的几个特定比较函数。
- “优化的 findByX 函数” - 表示对所需的每种类型的优化搜索。
- “scalalala 方法”——我怀疑这是最慢但最优雅的方法。
另外,您将如何从 AJAX 获取响应并创建一个与此结构相似的数组?大多数教程都会手工挑选和滚动示例来演示数组的关联性,但不会实际使用它。
使用这种方法有什么陷阱吗?
体面的链接 (beyond this) 将不胜感激。
谢谢。
更新: 这就是我遇到的麻烦。如果我从服务器返回的数据类似于:
$.getJSON("map.php?jsoncallback=?", function(data) {
for (var x=0,xx=data.stars.length; x<xx; x++) {
stars.push(
new Star(
data.stars[x].id,
data.stars[x].xpos, data.stars[x].ypos,
data.stars[x].name, data.stars[x].owner
)
);
}
});
Star 是一个类:
function Star(id, x, y, n, o) {
this.id = id;
this.x = x; this.y = y;
this.name = n; this.owner = o;
}
那么如何将它变成“关联”样式数组呢?
【问题讨论】:
-
它不是使用关联数组,而是对象数组,它们完全不同。你说得对,JavaScript 没有关联数组
-
只要键是字符串,简单的 javascript 对象就可以被视为关联数组(或更准确地说是哈希图)。
-
我会避免扩展数组原型,而是编写一个实用函数/对象/构造函数来“封装”数组所需的按 x 查找功能
标签: javascript arrays