从数组javascript返回最小的连接

时间:2017-11-19 15:20:24

标签: javascript arrays sorting concat

我有这个代码适用于这个数组:['45','30','50','1']。

function penalty(a_list) {
  return a_list.sort((a, b) => a - b).join('');
}

例如:假设a_list是['45','30','50','1'],最小的可能字符串将是'1304550',这是正确的,但是如果a_list是['32', '3']给出这个当前代码,我将得到'332',这是不正确的,因为'323'是最小的可能字符串。希望有所帮助。

1 个答案:

答案 0 :(得分:6)

您可以采用ab的连续值以及ba的值,并将其三角形用于排序,这反映了排序顺序这两个字符串的值较小,以便以后加入。

如果提供了整数,则需要在排序回调中将值转换为字符串。

function sort(a, b) {
    return (a + b) - (b + a);
}

console.log([['45', '30', '50', '1'], ['32', '3']].map(a => a.sort(sort).join('')));

对于稳定排序,您可以将较小的值移动到顶部(这不会影响以后加入的字符串)。这会在'3'之前对'33'进行排序。

function sort(a, b) {
    return (a + b) - (b + a) || a - b;
}

console.log([['45', '30', '50', '1'], ['32', '3']].map(a => a.sort(sort).join('')));