无法对Java数组进行排序

问题描述 投票:0回答:3

我正在尝试先在数组中打印唯一元素,然后使用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"]
javascript arrays sorting do-while
3个回答
0
投票

您可以将非数字部分和数字部分作为数组并排序

  1. 按数字部分和
  2. 非数字部分。

这对于'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);

0
投票

怎么样:

//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);


-1
投票

sort方法指定一个定义排序顺序的函数。如果您根据第二个字符(数字值)对其进行排序,则默认情况下,字母将成为第二个排序标准。

var arr1 = ['a1','a2','a3,' ,'b1', 'b2' , 'c1' , 'c2'];
var arr2 = [];

console.log(arr1.sort((a,b) => a[1]-b[1]));
© www.soinside.com 2019 - 2024. All rights reserved.