0

国名の配列があり、名前の2次元配列を作成したいのですが、そこに数えます。私が持っている配列は、

names = [Afghanistan,Alaska,Alaska,Alaska,Alaska,Alaska,Argentina,Argentina,British Virgin Islands,British Virgin Islands]

だから私は2次元配列で各国の数が欲しい. たとえば、私はこのようなものが必要です

country['Afghanistan, 1]
country['Alaska, 5]
country['Argentina, 2]

等々。

誰か助けてください。ありがとう

4

3 に答える 3

1

これはあなたが求めたものです:

var nameCounts = {};
for(var i = 0; i < names.length; i++) {
    if(names[i] in nameCounts) {
        nameCounts[names[i]]++;
    } else {
        nameCounts[names[i]] = 1;
    }
}

var country = [];
for(var name in nameCounts) {
    country.push([name, nameCounts[name]]);
}

nameCounts私があなただったら、名前からカウントへのマップであるにデータを入力したら停止します。

また、例のように名前がアルファベット順であることがわかっている場合は、これを最適化できます。

于 2013-10-28T00:14:25.267 に答える
0

結果配列を直接作成する別のアプローチを次に示します。

function getNamesCount(a) {
  var nameIndex = {};
  var results = [];

  for (var i=0, iLen=a.length, name; i<iLen; i++) {
    name = a[i];

    if (!nameIndex.hasOwnProperty(name)) {
      nameIndex[name] = results.length;
      results.push(name, 0);
    }
    results[nameIndex[name] + 1] += 1;
  }
  return results;
}
于 2013-10-28T01:28:15.047 に答える