Javascript从数组中随机选择并按字母顺序排列
Javascript to choose random from array and alphabetize
我正试图编写一个脚本,从对象列表中随机选择三个项目,按一个字段的字母顺序排列,然后显示另一个字段按字母顺序排列的值。到目前为止,我可以让它随机选择项目并显示它们,但它仍然没有排序。这是我的代码:
function random_text() {};
var random_text = new random_text();
var number = 0;
random_text[number++] = {
show: "Bob",
sort: "A"
}
random_text[number++] = {
show: "Casey",
sort: "B"
}
random_text[number++] = {
show: "Dan",
sort: "C"
}
random_text[number++] = {
show: "Alfred",
sort: "D"
}
var random_number = Math.floor(Math.random() * number);
var random_number1 = Math.floor(Math.random() * number);
var random_number2 = Math.floor(Math.random() * number);
if (random_number !== random_number1) {
var name1 = random_text[random_number1].show;
} else {
var name1 = "";
}
if (random_number !== random_number2 && random_number1 !== random_number2) {
var name2 = random_text[random_number2].show;
} else {
var name2 = "";
}
var name3 = random_text[random_number].show;
var objs = [name1 + " " + name2 + " " + name3];
objs.sort(function (a, b) {
var nameA = a.sort.toLowerCase(),
nameB = b.sort.toLowerCase()
if (nameA < nameB) //sort string ascending
return -1
if (nameA > nameB) return 1
return 0 //default return value (no sorting)
})
document.write(objs.sort());
提前感谢您的帮助。如果有什么方法可以清理代码,我也很感激有关提示。
请参阅http://jsfiddle.net/Nc2Je/
var random_text = [
{
show: "Bob",
sort: "A"
},
{
show: "Casey",
sort: "B"
},
{
show: "Dan",
sort: "C"
},
{
show: "Alfred",
sort: "D"
}
],random_numbers = new Array(),
objs=new Array();
for(var i=0;i<3;i++){
function random(){
var n=Math.floor(Math.random() * random_text.length);
if(random_numbers.indexOf(n)===-1){return n;}
return random();
}
random_numbers.push(random());
objs.push(random_text[random_numbers[i]])
}
var alphabetized=new Array();
outerloop:
for(var i=0;i<objs.length;i++){
for(var j=0;j<alphabetized.length;j++){
if(alphabetized[j].sort>objs[i].sort){
alphabetized.splice(j,0,objs[i]);
continue outerloop;
}
}
alphabetized.push(objs[i]);
}
alphabetized.getNames=function () {
var arr=new Array();
for(var i=0;i<this.length;i++){
arr.push(this[i].show);
}
return arr;
}
document.write(alphabetized.getNames());
编辑:
你做了一些奇怪的事情:
1-为什么要创建一个空函数,然后用它自己的实例覆盖它?
function random_text() {};
var random_text = new random_text();
2-如果你想要一个像数组一样工作的对象,为什么不使用数组而不是将类似数组的属性设置为random_text
?
var number = 0;
random_text[number++] = {
show: "Bob",
sort: "A"
}
random_text[number++] = {
show: "Casey",
sort: "B"
}
random_text[number++] = {
show: "Dan",
sort: "C"
}
random_text[number++] = {
show: "Alfred",
sort: "D"
}
3-您应该使用数组random_numbers
而不是那些变量:
var random_number = Math.floor(Math.random() * number);
var random_number1 = Math.floor(Math.random() * number);
var random_number2 = Math.floor(Math.random() * number);
4-你应该确保你的随机数与以前的随机数不同,而不是那些奇怪的检查。用你的支票,也许这三个随机数字是相同的,所以你只有一个名字。
if (random_number !== random_number1) {
var name1 = random_text[random_number1].show;
} else {
var name1 = "";
}
if (random_number !== random_number2 && random_number1 !== random_number2) {
var name2 = random_text[random_number2].show;
} else {
var name2 = "";
}
var name3 = random_text[random_number].show;
5-为什么要创建一个只有一个元素(字符串)的数组?
var objs = [name1 + " " + name2 + " " + name3];
6-我没有使用你下面的代码,因为我从来没有使用过,所以我写了自己的排序函数。
objs.sort(function (a, b) {
var nameA = a.sort.toLowerCase(),
nameB = b.sort.toLowerCase()
if (nameA < nameB) //sort string ascending
return -1
if (nameA > nameB) return 1
return 0 //default return value (no sorting)
})
7-一旦你对对象进行了排序,如果你想写它们,你应该使用document.write(objs)
而不使用sort()
。
编辑2:
alphabetized.getNames
返回一个数组。
这样你就可以进行
var names=alphabetized.getNames();
names.length;
names[0];
...
如果您想要一个字符串,您可以执行alphabetized.getNames().join(" ");
相关文章:
- 从数组中删除重复条目,并在javascript中按顺序排列
- Javascript从数组中随机选择并按字母顺序排列
- 如何在php中按元素按字母顺序排列json文件
- 如何根据 js 中每个单词的第 n 个字母按字母顺序排列列表
- Javascript将生日按数组顺序排列
- 列出按字母顺序排列的 javascript 和字母标题
- 按字母顺序排列字符串
- 排列<p>使用jQuery按日期顺序排列的元素
- 确定字符串中的所有字母是否按JavaScript字母顺序排列
- 按数组顺序排列对象
- 按字母顺序排列列表
- 多个 ajax 异步不按顺序排列,需要同步行为
- 按数字顺序排列列表
- JavaScript 按字母顺序排列
- jQuery Rotator是按字母顺序排列的,我怎样才能在我的主页上随机化
- 按字母顺序排列 AngularJS 中对象保留键/值关联的选项
- 需要一个优化的解决方案来获取按字母顺序排列的记录集 javascript
- Jquery - 按顺序排列的 ajax 循环
- Javascript 如何创建按顺序排列数字的对象
- Mongodb文档没有按正确的顺序排列