0

我有一个对象,其中包含一组对象,我需要从中获取它们的属性值。

作为一个例子,这是我需要得到的:

Stronghold.bins.models[0].attributes.entity.title

返回“要塞标题 1”

function grabItemName(){
   var itemName=$(Stronghold.bins).each(function(){
      return this.models[0].attributes.entity.title == title;
      console.log(itemName);
   })
};

(如果我有更好的方法来问这个问题,请告诉我)

如果问得不好,我深表歉意!

当前的问题是它不理解数组值 '[0]' 并且无法读取它,因为它是未定义的。我需要做什么来获取数组中所有项目的“标题”值?

4

2 回答 2

2

我需要做什么来获取数组中所有项目的“标题”值?

这就是.map [docs]的用途。它允许您将数组中的每个值映射到另一个值。

在下文中,我假设您要迭代 each Stronghold.bins.models,因为提供的信息对迭代Stronghold.bins没有意义:

var titles = $.map(Stronghold.bins.models, function(obj) {
    return obj.attributes.entity.title;
});
// `titles` is now an array containing `.attributes.entity.title;` of
// each object.

当前的问题是它不理解数组值 '[0]' 并且无法读取它,因为它是未定义的。

好吧,这不会再发生了;)在您的示例中,您迭代了Stronghold.bins对象的属性。这些属性之一就是models它本身(!),我怀疑任何其他属性值都具有models属性。

于 2013-02-20T18:16:50.300 回答
-1

尝试使用每个函数的其他版本:

$.each(Stronghold.bins, function () {

});

您正在使用的版本是用于循环浏览页面上的元素,例如$('body div p').each(function() {}),这不是您在这种情况下想要的:您想要循环Stronghold.bins.

于 2013-02-20T18:13:10.957 回答