如何从JavaScript对象中获取一个项目:
var items = [
{
ITEM:1,
AMOUNT:10
},
{
ITEM:2,
AMOUNT:20
}
];
我希望能够做到以下操作:
$(items).filter(ITEM == 1).AMOUNT;
...将返回10
。
如何从JavaScript对象中获取一个项目:
var items = [
{
ITEM:1,
AMOUNT:10
},
{
ITEM:2,
AMOUNT:20
}
];
$(items).filter(ITEM == 1).AMOUNT;
...将返回10
。
您正在创建一个对象数组。如果按顺序插入项目,则可以使用以下方法:
items[0].AMOUNT; // return the amount of the first item in the array
然而,(使用纯JavaScript)您可能更喜欢利用JavaScript对象的哈希表特性,并使用类似以下内容的代码:
var items = {
item1: {
amount: 10
},
item2: {
amount: 20
}
};
那么您将能够使用下标符号:
items['item1'].amount;
...或者使用点符号表示:
items.item1.amount;
@casablanca的解决方案是一个有效的替代方案,但请注意filter()
方法在测试每个数组元素时运行时间复杂度为O(n)。另一方面,从哈希表中查找项的时间复杂度为O(1)(常数时间)。
filter
方法,该方法返回一个包含所有匹配元素的新数组。(可能有多个匹配项)var results = items.filter(function(obj) { return obj.ITEM == 1; });
for (var i = 0; i < results.length; i++)
alert(results[i].AMOUNT);
filter
方法。如果不存在,您可以自己定义它:if (typeof Array.prototype.filter == 'undefined')
Array.prototype.filter = function(callback) {
var result = [];
for (var i = 0; i < this.length; i++)
if (callback(this[i]))
result.push(this[i]);
return result;
}
items['item' + 1].amount;
,其中您可以用变量替换1
...('item' + 1
是字符串连接,并返回'item1'
)。 - Daniel Vassallofilter
解决方案。 - Daniel Vassallo