-1

このような配列がある場合

var cars=
[
      { 'title':'brand', 'value':'honda'}
      { 'title':'brand', 'value':'toyota'}
      { 'title':'color', 'value':'red'}
      { 'title':'color', 'value':'white'}
      { 'title':'year', 'value':'1995'}
      { 'title':'year', 'value':'2006'}
      { 'title':'year', 'value':'2007'}     
 ]

要素のランクを返す単一の関数を作成するにはどうすればよいですか。したがって、この配列では、タイトルが「ブランド」の要素の場合は 0 を返し、タイトルが「色」の要素の場合は 1 を返す必要があります。マッピングテーブルをキャッシュしたり使用したりすべきではありませんが、飛行中のランクを決定する必要があります。

getRank(cars[6]) == 2 //true for the last element 
getRank(cars[0]) == 0 //true for the first element 
getRank(cars[1]) == 0 //true for the second element 
getRank(cars[3]) == 1 //true for the fourth element 
4

2 に答える 2

2

さらなる説明に基づいて回答を更新しました

Javascript

var cars = [
      { 'title':'brand', 'value':'honda'},
      { 'title':'brand', 'value':'toyota'},
      { 'title':'color', 'value':'red'},
      { 'title':'color', 'value':'white'},
      { 'title':'year', 'value':'1995'},
      { 'title':'year', 'value':'2006'},
      { 'title':'year', 'value':'2007'}     
 ];

function getRank(data, number) {
    var ranks = {},
        rank = 0;

    data.forEach(function (entry) {
        if (typeof ranks[entry.title] !== "number") {
            ranks[entry.title] = rank;
            rank += 1;
        }
    });

    return ranks[data[number].title];
}


console.log(getRank(cars, 6));
console.log(getRank(cars, 0));
console.log(getRank(cars, 1));
console.log(getRank(cars, 3));

jsfiddleについて

出力

2
0
0
1
于 2013-05-16T22:06:24.607 に答える