【发布时间】:2012-06-05 22:03:09
【问题描述】:
我有一个数组,排序后如下所示:
var arr = ["a", "a", "b", "b", "b", "b", "c", "c", "c"];
有 2 个 "a" 字符串、4 个 "b" 字符串和 3 个 "c" 字符串。
我正在尝试返回 3 个单独的数组,从循环中一次返回一个,包含 only 匹配值。因此,在第一次迭代时,返回的数组将显示为 newArr = ["a", "a"],第二次显示为 newArr = ["b", "b", "b", "b"],第三次迭代显示为 newArr = ["c", "c", "c"]。
但是,这是一个预定义值的小数组,我需要一种算法,它可以对 unknown 大小、unknown 元素的数组执行相同的操作,并且使用 未知 类似元素的数量。 (请记住,在这种情况下,数组已经开始排序)
这是我的疯狂代码,它显示了一些不寻常且不正确的结果:
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] + " ";
}
here.innerHTML += "<br />";
} // end of setValues function
【问题讨论】:
-
请编辑您的问题以澄清
["a","a","b","b","a","a"]将返回[["a","a"],["b","b"],["a","a"]]还是[["a","a","a","a"],["b","b"]],以及您是否希望函数输入像您的第一个数组一样排序。 -
在您给出的示例中,
["a", "a", "b", "b", "a", "a"]应该返回 2 个数组:["a", "a", "a", "a",]和["b", "b"]。 -
而且我有一个对数组进行排序的函数,上面没有提到,但是数组会在拆分成几个数组之前进行排序。
标签: javascript arrays sorting string-matching array-push