gpt4 book ai didi

javascript - For 在主干集合上循环

转载 作者:可可西里 更新时间:2023-11-01 01:57:38 26 4
gpt4 key购买 nike

对 backbone 还很陌生,所以这是一个非常基本的问题。我将一个 Backbone 集合传递给了一个函数,我可以证明它已被传递并且集合中的模型具有 ID。

这是我设置 id 的方式 -

convertToMapObjects: (results)  =>
objectList = new ObjectList()
results.each(result)->
testObj = new TestObject()
testObj.set
id = result.get("id")
objectList.add(testObj)

在另一个函数中(通过使模型触发事件来访问)-

getIds: (objects) =>
ids = (object.id for object in objects)

我认为问题可能出在我如何遍历集合,因为当我尝试这样做时

for object in objects
console.log(object)

我看到了两个未定义的。这个对吗?如果是这样,为什么我不能使用 for 循环来遍历 Backbone 集合?另外,有什么办法可以做到吗?

最佳答案

Backbone 集合不是数组,因此 for ... in 不会产生您期望的结果。你想看看收藏的models属性,如果你想使用一个简单的循环。

但是,Backbone 集合有 various Underscore methods mixed in :

Underscore Methods (28)

Backbone proxies to Underscore.js to provide 28 iteration functions on Backbone.Collection. They aren't all documented here, but you can take a look at the Underscore documentation for the full details…

  • forEach (each)
  • ...

所以你可以使用mappluck如果您想避免访问 models property :

ids = objects.map (m) -> m.id
ids = objects.pluck 'id'

pluck 方法或多或少只是 map 的一个特例,但是集合实现了原生版本而不是使用 Underscore 版本,这样它们就可以 pluck 模型属性而不是简单的对象属性。

关于javascript - For 在主干集合上循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11726943/

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