我正在尝试先在数组中打印唯一元素,然后使用do-while进行另一次迭代
var arr1 = ['a1','a2','a3,' ,'b1', 'b2' , 'c1' , 'c2'];
var arr2 = [];
var userInput = 7;
do{
for (var i =0; i < arr1.length; i++)
{
if (arr2.indexOf(arr1[i]) == -1 ))
{
arr2.push(arr1[i]);
if (arr2.length == userInput)
{
break;
}
}
}
}while (arr2.length == userInput);
console.log(arr2)
//output = ["a1", "a2", "a3,", "b1", "b2", "c1", "c2"]
//expected output = ["a1", "b1", "c1,", "a2", "b2", "c2", "a3"]
您可以将非数字部分和数字部分作为数组并排序
这对于'foo42'
之类的字符串也适用。
var array = ['a1', 'a2', 'a3', 'b1', 'b2', 'c1', 'c2'];
array.sort((a, b) => {
var aa = a.match(/(\D+)(\d+)/).slice(1),
bb = b.match(/(\D+)(\d+)/).slice(1);
return aa[1] - bb[1] || aa[0].localeCompare(bb[0]);
});
console.log(array);
怎么样:
//original array
var arr = ['a1','a2','a3,' ,'b1', 'b2' , 'c1' , 'c2'];
//original array, sorted
var sorted = arr.sort();
//set, to get only unique elements
var set = new Set(sorted);
//set expanded to get array, might use it without this
var result = [...set];
console.log(set);
sort方法指定一个定义排序顺序的函数。如果您根据第二个字符(数字值)对其进行排序,则默认情况下,字母将成为第二个排序标准。
var arr1 = ['a1','a2','a3,' ,'b1', 'b2' , 'c1' , 'c2'];
var arr2 = [];
console.log(arr1.sort((a,b) => a[1]-b[1]));