1

我有以下 javascript 数组:

var vat = [
{ id: '', description: '' },
{ id: 'Zero', description: '0%' },
{ id: 'Six', description: '6%' },
{ id: 'Nineteen', description: '19%' },
{ id: 'TwentyOne', description: '21%' }];

我需要使用of 'Six'description获取元素。我认为这是可能的,但我没有成功。id

欢迎任何帮助。

谢谢。

4

5 回答 5

5

你可以filter让数组只留下你正在寻找的项目:

var desc = vat.filter(function (item) {
    return item.id === "Six";
})[0].description;

请注意,这Array.prototype.filter是一种 ES5 方法,旧浏览器不支持。您可以在之前链接到的 MDN 文章中找到它的 polyfill。

于 2013-06-12T13:15:08.113 回答
0

如果您知道这是第三项,那么:

vat[2]['description']

否则,您可以按照 James Allardice 的建议使用过滤器

于 2013-06-12T13:16:39.620 回答
0

数组的结构使这比必要的复杂一些。这是一个更简单的替代结构:

var vat = { '': '', 'Zero': '0%' } // and so on
vat['Zero'] // gives '0%'

如果你被现有的结构卡住了,你需要一个循环。例如:

var result;
for (var i = 0; i < vat.length; i++) {
  if (vat[i].id == 'Six') {
    result = vat[i].description;
    break;
  }
}

PS。不同答案中建议的filter方法使这更容易,但它需要至少支持 JavaScript 1.6 的浏览器。

于 2013-06-12T13:16:47.577 回答
0

如果你想直接访问它,你必须知道它的位置。
例子 :

var myDesc = vat[2].description;

或者你可以循环播放它。
例子 :

var myDesc = null
for (i in vat) {
    if (vat[i].id == 'Six')  {
        myDesc = vat[i].desc;
    }
}

希望这是你需要的。

于 2013-06-12T13:16:57.957 回答
0
    for(var i=0;i < vat.length;i++){
        if(vat[i].id == "Six"){
            alert(vat[i].description);
        }
    }
于 2013-06-12T13:18:15.740 回答