计算第一个数组中字符串的出现次数

时间:2015-12-14 14:42:17

标签: javascript arrays

我有两个邮政编码数组。第一个数组有许多邮政编码,包括重复。第二个数组删除了重复项以仅显示唯一的邮政编码。

如何查看每个唯一邮政编码在包含重复的邮政编码中出现的次数?

例如,如果我有21218的两个值,我该如何检查有两个值?我想迭代唯一的名称数组,如果可能的话,检查重复的名称数组。

修改:此问题与this previously asked question here类似。但是,它的不同之处在于目标是使用现有代码并将其合并到解决方案中。

var url = 'https://data.baltimorecity.gov/resource/uds6-qsb6.json?$limit=50000';
var manyZipArray = [];
var zipArray = [];


$(document).ready(function() {
  $.getJSON(url, function(data) {
    for (var i = 0; i < data.length; i++) {
      manyZipArray.push(data[i].zip);
    };
    $.each(manyZipArray, function(i, el) {
      if ($.inArray(el, zipArray) === -1) zipArray.push(el);
    });
    zipArray.sort();
    for (var i = 0; i < zipArray.length; i++) {
      $('#myList').append("<li>" + zipArray[i] + "</li>");
    };
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3 style="text-align: center" ;>Unique Zip Codes </h3>
<ul id="myList"></ul>

3 个答案:

答案 0 :(得分:1)

您可以使用javascript object通过使用邮政编码设置对象的新密钥来存储每个邮政编码的出现次数。

见下面的代码:

&#13;
&#13;
var url = 'https://data.baltimorecity.gov/resource/uds6-qsb6.json?$limit=50000';
var manyZipArray = [];
var zipArray = [];
var numberOfZips = {};//object to hold the counters


$(document).ready(function() {
  $.getJSON(url, function(data) {
    for (var i = 0; i < data.length; i++) {
      manyZipArray.push(data[i].zip);
      if (data[i].zip in numberOfZips){
          numberOfZips[data[i].zip] += 1;
      }else{
          numberOfZips[data[i].zip] = 1;
      }
    };
    $.each(manyZipArray, function(i, el) {
      if ($.inArray(el, zipArray) === -1) zipArray.push(el);
    });
    zipArray.sort();
    for (var i = 0; i < zipArray.length; i++) {
      $('#myList').append("<li>" + zipArray[i] +","+numberOfZips[zipArray[i]]+ "</li>");
    };
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3 style="text-align: center" ;>Unique Zip Codes </h3>
<ul id="myList"></ul>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我会做一个迭代非重复数组的循环,对于每个zip值,迭代整个数组并计算它的外观。在下面的示例代码中,我将值存储在一个新数组中,但您可以随意使用它们。

var zipOcurrences = array();
var i = 0;
zipArray.each(function(){
  zipOcurrences[i] = 0;
  var zip = $(this);
  manyZipArray.each(function(){
    if ($(this)==zip){
      zipOcurrences[i]++;
    }
  });
  i++;
});

答案 2 :(得分:0)

您可以使用包含邮政编码和出现次数的对象替换zipArray数组中的代码

&#13;
&#13;
var url = 'https://data.baltimorecity.gov/resource/uds6-qsb6.json?$limit=50000';
var manyZipArray = [];
var zipArray = [];

$(document).ready(function() {
  $.getJSON(url, function(data) {
    for (var i = 0; i < data.length; i++) {
      manyZipArray.push(data[i].zip);
    };
    $.each(manyZipArray, function(i, el) {
      // custom search in array
      var index = arrayObjectIndexOf(zipArray, el, "code");
      if (index === -1) {
          zipArray.push({ code: el, occur: 1 });
      }
      else {
          zipArray[index].occur++;
      }
    });
    // custom sort to sort according to 'code' attribute
    zipArray.sort(function(a, b) { 
        if (a.code< b.code) return -1;
        if (a.code > b.code) return 1;
        return 0;
    });
    for (var i = 0; i < zipArray.length; i++) {
      $('#myList').append("<li>" + zipArray[i].code + " (" + zipArray[i].occur + ")</li>");
    };
  });
});

function arrayObjectIndexOf(myArray, searchTerm, property) {
    for(var i = 0, len = myArray.length; i < len; i++) {
        if (myArray[i][property] === searchTerm) return i;
    }
    return -1;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3 style="text-align: center" ;>Unique Zip Codes </h3>
<ul id="myList"></ul>
&#13;
&#13;
&#13;