【问题标题】:Javascript, arrays [duplicate]Javascript,数组[重复]
【发布时间】:2012-07-23 03:10:36
【问题描述】:

可能重复:
Counting occurences of Javascript array elements

我在 javascript 中有一个数组,例如该数组是:

array(1,1,1,1,5,5,7,7);

如果有人可以帮助我了解如何计算相似值, 以及如何加入相似的价值观, 谢谢大家,祝您有愉快的一天。

【问题讨论】:

  • 通过join相似的值,你的意思是combine它们成为一个唯一的值吗?
  • 好像已经排好序了。你不能想象一个简单的算法来做你想做的事吗?提示:使用循环。
  • 最好展示您尝试过的内容或描述您正在考虑做的事情。这样你会得到更好的回应
  • 如果您有什么不明白的地方,请先阅读并尝试一下。 SO 更适合帮助您解决特定问题,更多 effort shown in the question

标签: javascript arrays join count


【解决方案1】:

这是一个计算它包含多少次数字的解决方案。

var count = [];
for(var i=0; i<array.length; i++) {
    count[array[i]]++;
}

【讨论】:

  • 没有初始化就不能工作。另外,我建议使用对象而不是数组。
  • 不完全是:undefined++ -> NaN
【解决方案2】:

我可以建议使用underscore.js。您要查找的代码并不难编写,并且会是一次很好的学习体验。一旦你这样做了,underscore 是一个非常方便的库,它提供了你正在寻找的东西,而且你不必维护它。 :)

uniq 函数将为您提供没有重复的数组副本,size 函数将告诉您包含多少值(或仅引用 .length 属性)。

【讨论】:

  • 啊,是的,“让我们为我们需要做的每个简单功能合并另一个库”的 Web 开发方法。
  • 这就是图书馆的用途。
  • 建议图书馆并不是对特定问题的回答。除非 OP 询问如何用下划线来做,否则它不是主题。
  • A +1。因为它不值得-1。它回答了如何在 JS 中解决问题。所述库仍然是 JS,并且发帖人没有要求“没有库”.. 虽然展示它如何在 vanilla JS 中解决可能会更好地满足发帖人的经验:)
  • 这是特定于您的帖子的。 @pst 支持它,即使它没有尝试回答问题,第二段甚至没有帮助 OP 按要求计算相似的值。
【解决方案3】:

如果您希望唯一标识数组内容:

Array.prototype.unique =
  function() {
    var a = [];
    var l = this.length;
    for(var i=0; i<l; i++) {
      for(var j=i+1; j<l; j++) {
        // If this[i] is found later in the array
        if (this[i] === this[j])
          j = ++i;
      }
      a.push(this[i]);
    }
    return a;
  };

  var myArray = [1,1,1,1,5,5,7,7];

  var uniquedMyArray = myArray.unique();
  var valueCountsMyArray = [];
  for (var i = 0; i < myArray.length; i++) {
     if (valueCountsMyArray[myArray[i]])
        valueCountsMyArray[myArray[i]]++;
     else
        valueCountsMyArray[myArray[i]] = 1;
  }

【讨论】:

  • 谢谢 J Torres,祝您有美好的一天。
【解决方案4】:
var array = [1,1,1,1,5,5,7,7];

var count = 0;
var tempArray = array.sort();
var i;
var prevValue = null;
var joined = [];
for (i = 0; i < array.length; i++) {

    if (tempArray[i] != prevValue) {
        count++;
        prevValue = tempArray[i];
        joined.push(prevValue);
    }

}

​document.write(joined);​

【讨论】:

猜你喜欢
  • 2013-05-29
  • 2016-01-11
  • 2013-09-18
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 2013-03-21
  • 2018-07-31
相关资源
最近更新 更多