如何在javaScript中从一组数组中形成最大数
我有一个数组,如何在javaScript中从一组数组中形成最大数,javascript,arrays,sorting,join,Javascript,Arrays,Sorting,Join,我有一个数组,arr=[1,3,34,44,4,45,6,76,9,98,23]并希望从上面的数组中形成最大的数。订单号是998766454443231 我试着在这些数字集合中使用它,对于2位数字来说效果很好,但对于更多的数字就不行了。有人能提出一个一般性的答案吗 按每个数字的第一个数字降序排列数组(通过转换为字符串数组) 将已排序数组的所有数字合并 函数交换阵列元素(arr、indexA、indexB){ 设温度=arr[indexA]; arr[indexA]=arr[indexB]; a
arr=[1,3,34,44,4,45,6,76,9,98,23]
并希望从上面的数组中形成最大的数。订单号是998766454443231
我试着在这些数字集合中使用它,对于2位数字来说效果很好,但对于更多的数字就不行了。有人能提出一个一般性的答案吗
函数交换阵列元素(arr、indexA、indexB){
设温度=arr[indexA];
arr[indexA]=arr[indexB];
arr[indexB]=温度;
}
函数最大数(arr){
让狂妄自大;
arrOfStrings=arr.map(n=>n.toString());
for(设i=0;i
按每个数字的第一个数字降序排列数组(通过转换为字符串数组)
将已排序数组的所有数字合并
函数交换阵列元素(arr、indexA、indexB){
设温度=arr[indexA];
arr[indexA]=arr[indexB];
arr[indexB]=温度;
}
函数最大数(arr){
让狂妄自大;
arrOfStrings=arr.map(n=>n.toString());
for(设i=0;i console.log(largestNum)
您可以获取一个具有字符串值的数组,该数组包含a
和b
的值,以及b
和a
的值,并获取该数组的增量进行排序,这反映了两个字符串的排序顺序,以获得更大的值,以便以后进行合并
函数getmax(数组){
返回数组
.map(字符串)
.sort((a,b)=>(b+a)-(a+b))
.加入(“”);
}
log(getmax([1,3,34,44,4,45,6,76,9,98,23])
您可以获取一个具有字符串值的数组,该数组包含a
和b
的值,以及b
和a
的值,并获取该数组的增量进行排序,这反映了两个字符串的排序顺序,以获得更大的值,以便以后进行合并
函数getmax(数组){
返回数组
.map(字符串)
.sort((a,b)=>(b+a)-(a+b))
.加入(“”);
}
log(getmax([1,3,34,44,4,45,6,76,9,98,23])代码>编写一个比较函数compare(),并使用它对数字进行排序。给两个
数字第一和第二,我们比较两个数字firstsecond(第二个附加在第一个末尾)和secondfirst(第一个附加在第二个末尾)。若firstsecond较大,那个么在输出中第一个应该在第二个之前,否则第二个应该在第一个之前
function sortArray(arr){
arr.sort(function compare(first,second) {
var firstsecond ='' + first + second;
var secondfirst ='' + second + first;
return firstsecond>secondfirst ? -1:1;
})
}
function getLargestNumber(arr){
var largestNumber = arr.join('')
return largestNumber
}
var arr = [1,3,34,44,4,45,6,76,9,98,23]
sortArray(arr)
var result = getLargestNumber(arr)
alert(result)
编写一个比较函数compare(),并使用它对数字进行排序。给两个
数字第一和第二,我们比较两个数字firstsecond(第二个附加在第一个末尾)和secondfirst(第一个附加在第二个末尾)。若firstsecond较大,那个么在输出中第一个应该在第二个之前,否则第二个应该在第一个之前
function sortArray(arr){
arr.sort(function compare(first,second) {
var firstsecond ='' + first + second;
var secondfirst ='' + second + first;
return firstsecond>secondfirst ? -1:1;
})
}
function getLargestNumber(arr){
var largestNumber = arr.join('')
return largestNumber
}
var arr = [1,3,34,44,4,45,6,76,9,98,23]
sortArray(arr)
var result = getLargestNumber(arr)
alert(result)
怎么样:
const concatMax=(…nums)=>nums.sort((a,b)=>(“”+b+a)-(“”+a+b)).join(“”);
日志(concatMax(1,3,34,44,4,45,6,76,9,98,23))//99876645444343231
console.log(concatMax(2,20,24,6,8))//8624220
怎么样:
const concatMax=(…nums)=>nums.sort((a,b)=>(“”+b+a)-(“”+a+b)).join(“”);
日志(concatMax(1,3,34,44,4,45,6,76,9,98,23))//99876645444343231
console.log(concatMax(2,20,24,6,8))//8624220
你能给我们看你的代码吗…?你需要的(w/o拆分
)都在标签中提到了。请分享这个输出的逻辑。也用两位数字给我们看你的尝试。我在其他一些系统中试过了,我会再写一次,并且肯定会发布到@gurvinder372你能给我们看你的代码吗…?你需要的一切(w/o拆分
)标签中提到了。请分享此输出的逻辑。同时用2位数字向我们展示您的尝试。我在其他系统中也尝试过,我会再写一次,并肯定会发布@gurvinder372太多排序。@NinaScholz耶!,但逻辑与代码相同。我是JavaScript新手,我不知道不需要将类型转换为整数。我通过两个值的concatation和concatation切换值的concatation对数组进行排序,并将数字delta作为排序值返回。但是你是对的,你可以迭代这些数字并比较每个数字的值…@NinaScholz,我知道了。我编辑了我的代码,这次我只进行了一次排序,我想逻辑类似于“排序((a,b)=>(b+a)-(a+b))”对吧?看起来是一样的,但我对几乎相同的问题有一个解释。排序太多了。@NinaScholz耶!,但逻辑与代码相同。我是JavaScript新手,我不知道不需要将类型转换为整数。我通过两个值的concatation和concatation切换值的concatation对数组进行排序,并将数字delta作为排序值返回。但是你是对的,你可以迭代这些数字并比较每个数字的值…@NinaScholz,我知道了。我编辑了我的代码,这次我只排序了一次,我猜逻辑类似于“排序((a,b)=>(b+a)-(a+b))”对吧?看起来是一样的,但我对几乎相同的问题有一个解释。