【问题标题】:Using JavaScript/jQuery methods on array of objects?在对象数组上使用 JavaScript/jQuery 方法?
【发布时间】:2018-04-18 18:07:32
【问题描述】:

我在 JavaScript 中有一个对象数组,但在访问数组上的 JS 方法时遇到问题。

有没有办法在数组上使用诸如removeClassattr 之类的方法而不必使用for 循环?例如,在 jQuery 中,如果我执行 $("li.listing").removeClass("listing")....它将从所有存在此类的 li 标记中删除 listing 类。

有没有办法不必使用多个 for 循环,在数组上使用这些方法(以便查看数组中的每个元素/对象)?

示例

cars.removeClass("listing") // 从 cars 数组中的每个元素中删除 listing 类 - 这种语法或类似的可能吗?谢谢!

数组索引 [0] 示例

0: m.fn.init [
  li#listing-MCMR-R-ZT-BFNT001-ZT-BFNT001.listing.filtered-out-by-car-type.listing-filtered-out, 
  prevObject: m.fn.init(1), 
  context: car, 
  selector: "li.listing"
]

【问题讨论】:

    标签: javascript jquery arrays methods


    【解决方案1】:

    您可以使用Array.prototype.map 稍微简化语法,但它本质上也会循环遍历所有元素。在幕后,jQuery 也在循环它们,它所做的只是为您提供一种访问它的好方法,而无需自己编写循环

    你的例子:

    cars.map(function(car) { 
       return car.removeClass('listing');
    });
    

    正如 cmets 中所指出的,Array.prototype.forEach 可能更可取,如果您只想在当前数组上改变或应用函数而不返回任何新内容。无论哪种情况,这是在不使用显式 for 循环的情况下遍历数组的最简洁方法

    【讨论】:

    • 我不确定,但如果您不返回数组, .forEach 会比 .map 更可取吗?
    • 肯定取决于想要的结果!我想在这种特定情况下 forEarch 可能更可取。无论哪种方式,这两种方法中的一种是正确的方法
    • 你知道 .forEach 和实际的 for 循环之间是否存在性能差异吗?
    • 理论上 forEach 有点慢,因为在每个循环上调用一个函数的开销(这里很好解释stackoverflow.com/a/43821929/1148244),但实际上差异应该是微不足道的。 forEach 提供了良好的可读性并防止您处理额外的变量,尽管您应该很好地使用其中一个
    • 没问题!如果它解决了您的问题,请务必接受答案,以便未来的读者可以受益:)
    猜你喜欢
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多