javascript - 我如何从具有混合值的较大数组返回具有相等值的多个数组?

标签 javascript arrays sorting string-matching array-push

我有一个数组,排序后如下所示:

var arr = ["a", "a", "b", "b", "b", "b", "c", "c", "c"];


有 2 个 "a" 字符串、4 个 "b" 字符串和 3 个 "c" 字符串。

我试图返回 3 个单独的数组,从循环中一次返回一个,包含 匹配值。因此,在第一次迭代时,返回的数组将显示为 newArr = ["a", "a"],第二次为 newArr = ["b", "b", "b", "b"] 并在第三次迭代中作为 newArr = ["c", "c", "c"]

但是,这是一个由预定义值组成的小数组,我需要一种算法可以对 unknown 大小、unknown 元素和 的数组执行相同的操作em>未知 相似元素的数量。 (请记住,在这种情况下,数组已经开始排序)

这是我的疯狂代码,它显示了一些不寻常且不正确的结果:

var arr = ["a", "a", "b", "b", "b", "b", "c", "c", "c"];

for(var index = 0; index < arr.length; index++)
{
  var test = "";
  var newArr = []; // resets the new array upon each iteration
  var str = arr[index]; // initialized as the next unique index-value

  for(var i = index; i < arr.length; i++)
  {
    if(arr[i] == str)
    {
      newArr.push(arr[k]);
      test += arr[i] + " ";
    }
    else
    {
      index = i; // changing the outer loop variable
      break; // exiting the inner loop
    }
  } // end of inner loop

  window.alert(test);
  setValues(newArr);

} // end of outer loop

function setValues(arrSorted)
{
  var here = document.getElementById("here");

  for(var i = 0; i < arrSorted.length; i++)
  {
    here.innerHTML += arrSorted[i] + "&nbsp;";
  }

  here.innerHTML += "<br />";

} // end of setValues function

最佳答案

var arr = ["a", "a", "b", "b", "b", "b", "c", "c", "c"];
var arrays = {};
for (var i=0;i<arr.length;i++) {
  if (!arrays[arr[i]]) arrays[arr[i]] = [];
  arrays[arr[i]].push(arr[i]);
}

这会给你相当于

arrays = {};
arrays['a'] = ['a','a'];
arrays['b'] = ['b','b','b','b','b'];
arrays['c'] = ['c','c','c'];

关于javascript - 我如何从具有混合值的较大数组返回具有相等值的多个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10905634/

相关文章:

javascript - jQuery $.get 将 PHP 代码作为文本而不是值返回

javascript - 如何将 JSON.parse 值插入到 DOM 中

arrays - PowerShell 通过引用函数传递两个数组

javascript - 在一个接受数组并返回随机值的简单函数中 react js错误

javascript - 将 Array.prototype.sort() 与比较函数一起使用时的排序算法是什么

javascript - node.js 中 setInterval() 的奇怪行为(仅限 Windows,适用于 Linux)

javascript - 了解实现自定义迭代器

PHP - 使用数组外部数组中的值

python - 如何在 Python 中对有异常的列表进行排序

javascript - 随机排序数组