1

次のJavaScript配列があります:

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

description要素id'Six'を取得する必要があります。可能だと思いますが、成功しませんでした。

どんな助けでも大歓迎です。

ありがとう。

4

5 に答える 5

5

filter探しているアイテムだけを残すように配列できます。

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

これArray.prototype.filterは ES5 メソッドであり、古いブラウザーではサポートされていないことに注意してください。以前にリンクされた MDN の記事で、そのポリフィルを見つけることができます。

于 2013-06-12T13:15:08.113 に答える
0

それが 3 番目の項目であることがわかっている場合:

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 に答える