gpt4 book ai didi

javascript - Javascript 中基于属性的搜索

转载 作者:行者123 更新时间:2023-11-30 07:19:00 26 4
gpt4 key购买 nike

在寻找在 Javascript 中搜索对象数组的最佳方法时(似乎没有迭代 + 比较函数)我来了 across this post这似乎是一种非常优雅的方式。

但是我有一些问题:

  1. Javascript 没有关联数组。这些似乎是一个。什么给了?
  2. 这似乎是一个非常优雅的解决方案,但它如何与竞争对手抗衡呢?
    • “传递数组和比较函数” - 表示针对各种搜索的几个特定比较函数。
    • “优化的 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 数组对象应与数字顺序索引一起使用,但您可以使用普通对象,它们只是键/值对的集合。

在您链接的代码中,该函数在数组中查找对象。

请注意,此代码依赖于 jQuery(它使用 $.grep)。

为了性能,我建议您使用标准 Array.prototype.filter方法,现代浏览器提供了一个本地实现,与自定义实现相比,它非常快

为了兼容性(主要是为了 IE),您可以在上面的链接中包含方法实现。

这个方法真的好用,现在是ECMAScript 5th Edition Specification的一部分(PDF)( 第 15.4.4.20 节):

var filtered = existingArray.filter(function (obj) {
return obj.property == someValue;
});

上面的代码会给你一个新的filtered数组,其中包含与filter回调函数中指定的条件匹配的所有对象。

关于javascript - Javascript 中基于属性的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2045605/

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