我有一个对象,其中包含一个对象数组,我需要从中获取它们的属性值。
作为一个例子,这是我需要得到的:
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]'并且无法读取它,因为它未定义。我需要做些什么才能抓住这个标题'数组中所有项的值?
答案 0 :(得分:2)
获取数组中所有项目的“title”值需要做什么?
这就是.map
[docs]的用途。它允许您将数组中的每个值映射到另一个值。
在下面我假设你想迭代每个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
属性。
答案 1 :(得分:-1)
尝试使用每个功能的其他版本:
$.each(Stronghold.bins, function () {
});
您使用的版本用于循环浏览页面上的元素,例如$('body div p').each(function() {})
,这不是您在此实例中所需的内容:您希望循环遍历Stronghold.bins
中包含的值