Вы можете воспользоваться функцией сортировки, которая учитывает числа и строки, преобразовав значение в число, если значение isFinite
, в противном случае получите строку.
const
ASC = (a, b) => a > b || -(a < b)
ASC_BY_TYPE = (...p) => ASC(...p.map(v => isFinite(v) ? +v : v));
var productID0 = '65,78,98,565,12,546,879,456123,456,987,1,312,45,8,546,123,0,165,4566',
productID1 = 'asd,sad,d,s,as,e,ew,qw,asd,xsad,sad,sad,asd,eqw,sda,ds,wqe,sda,sad,wqewq';
console.log(productID0.split(',').sort(ASC_BY_TYPE).join());
console.log(productID1.split(',').sort(ASC_BY_TYPE).join());