【发布时间】:2016-09-26 18:25:44
【问题描述】:
我使用 while 循环填充二维数组,但是当第一列包含 3 个不同的唯一值时,我需要停止推送。
开头是这样的
var maxunique;
var i = 0;
while (countunique(arr) != maxunique) {
// my code that push data into array
arr[i].push(RandomNumber(1,8));
arr[i].push(i+1);
i++;
}
function countunique(arr)
{
// function here
}
function RandomNumber(min,max)
{
return Math.floor(Math.random()*(max-min+1)+min);
}
这会返回那个值
arr: [ [ 4, 1 ],
[ 7, 2 ],
[ 5, 3 ],
[ 5, 4 ],
[ 3, 5 ],
[ 1, 6 ],
[ 7, 7 ],
[ 8, 8 ],
[ 5, 9 ],
[ 5, 10 ] ]
关于预期结果的想法是
arr: [ [ 4, 1 ],
[ 7, 2 ],
[ 5, 3 ] ]
可以看到在前5个之后push被中断了,也就是数组中的第3个唯一值
我不知道怎么做,也不知道用 while 还是 for 循环更好。
有什么想法吗?
【问题讨论】:
-
for(...) { if (already at unique item limit) { don't push } },基本上。 -
呵呵呵呵我不知道怎么检查这个奇怪的情况
-
所以编写一些代码来计算数组中有多少项 X,如果超过限制就不要推送。
-
创建一个对象,其键是您希望唯一的值。当你推送一个值时,也将它添加到对象中。然后获取
Object.keys(yourObject)的长度,找出有多少个唯一值。当你达到极限时,跳出循环。 -
在 ES6 中可以使用 Set,可能会更方便一些。
标签: javascript arrays count 2d unique