如何从JavaScript对象获取项目?

如何从JavaScript对象获取项目?,javascript,jquery,json,Javascript,Jquery,Json,如何从JavaScript对象获取项目: var items = [ { ITEM:1, AMOUNT:10 }, { ITEM:2, AMOUNT:20 } ]; 我希望能够做到以下几点: $(items).filter(ITEM == 1).AMOUNT; var items = { item1: { amount: 10 }, item2: { amount: 20 } };

如何从JavaScript对象获取项目:

var items = [
  {
    ITEM:1,
    AMOUNT:10
  },
  {
    ITEM:2,
    AMOUNT:20
  }
];
我希望能够做到以下几点:

$(items).filter(ITEM == 1).AMOUNT;
var items = {
    item1: {
       amount: 10
    },
    item2: {
       amount: 20
    }
};

。。。它将返回
10

您可以使用Array
filter
方法,该方法返回一个包含所有匹配元素的新数组。(可能有多个匹配项)


您正在创建一个对象数组。如果项目按顺序插入,则可以使用:

items[0].AMOUNT;   // return the amount of the first item in the array
但是,(使用普通JavaScript)您可能更喜欢利用JavaScript对象的哈希表特性,并使用如下内容:

$(items).filter(ITEM == 1).AMOUNT;
var items = {
    item1: {
       amount: 10
    },
    item2: {
       amount: 20
    }
};
然后,您将能够使用下标符号:

items['item1'].amount;
items.item1.amount;
。。。或点符号:

items['item1'].amount;
items.item1.amount;


是一个有效的替代方案,但请注意,该方法在中运行,因为提供的选择器是针对数组的每个元素进行测试的。另一方面,可以在(常数时间)中找到哈希表中的项。

这与我想要的很接近,但问题是我不知道该项的值是多少。@colemande:你能举个例子吗?注意,使用下标表示法,您仍然可以执行
items['item'+1].amount,其中可以用变量替换
1
。。。(
'item'+1
是字符串连接,返回
'item1'
)我可以使用您的第一个答案。但是我需要能够得到我需要的对象的索引。有什么办法吗?var items=[{ITEM:red,AMOUNT:10},{ITEM:blue,AMOUNT:20}{ITEM:green,AMOUNT:20}];如何获取items.ITEM==green的索引?@colemande:如果您希望能够通过任何属性引用一个项,那么肯定会更简单、更直接。您仍然可以在我的答案中使用哈希表解决方案,但是您必须为项目的每个属性保留单独的“索引”。如果您将有数百个项目,这可能值得探索,但是如果您有一些项目,那么您可能需要测试
过滤器
解决方案。我使用了哈希表,解决了这个问题。谢谢你们两位的帮助。我最后做的是一个哈希表。我是这样做的。每个(JSONObject,函数(){Hashtable[this.item]=this;});现在我可以说:HashTable[OBJECT\u I\u WANT].VALUE\u I\u WANT\u TO\u SET='N';