问题描述
var points = [2,a,t,5,4,3]; 排序后:var points = [2,a,t,3,4,5];
对此有何帮助? 可以使用旧式javascript代码发布您的帮助,因为我在Adobe DC项目上工作?
我的代码在那里:
var points = [t1, t2, t3, t4];
[t1, t2, t3, t4] = points;
var lucky = points.filter(function(number) {
return isNaN(number) == false && number !=="" && number!== undefined;
});
points=lucky
points.sort(function(a, b){return a - b});
this.getField("Text6").value = points
但这只能最小化到最大值并过滤其他字符......我需要保留其他字符并且只保留短数字...
1楼
var points = [2, "a", "t", 5, 4, 11, "", 3]; var insert = points.slice(0); // Clone points // Remove all elements not a number points = points.filter(function(element) { return typeof element === 'number'; }); // Sort the array with only numbers points.sort(function(a, b) { return a - b; }); // Re-insert all non-number elements insert.forEach(function(element, index) { if (typeof element !== 'number') { points.splice(index, 0, element); } }); console.log(points);
2楼
如果只是简单地重新分配值,则可以通过避免splice()
来更有效地执行此操作。
过滤,排序,重新分配以对数字进行排序:
let arr = ['c', 2, 'a', 't', 5, 4, 3, 'b', 1] let n = arr.filter(c => typeof c == "number").sort((a, b) => ab) for (let i = 0, c=0; i<arr.length; i++){ if (typeof arr[i] == "number") arr[i] = n[c++] } console.log(arr)
3楼
filter()
数字超出数组。
然后sort()
它们然后循环通过实数组。
并检查值是否为Number
更改它将是排序数组的第一个元素。
并删除sortedArr
第一个元素
let arr = [5, 't', 's', 2,3,4]; let sortedNums = arr.filter(x => typeof x === 'number').sort((a,b) => ab); arr.forEach((a,i) => { if(typeof a === 'number'){ arr[i] = sortedNums[0] sortedNums.shift(); } }) console.log(arr)
4楼
以下内容应给出您输入的确切输出:
var result = [2, 'a', 't', 5, 4, 3].reduce( function(result,item){ return !isNaN(item)&&item!=='' ? typeof (result[result.length-1] && result[result.length-1].push) === 'function' ? (result[result.length-1].push(item),result) : result.concat([[item]]) : result.concat(item) }, [] ).map( function(item){ return typeof item.sort === 'function' ? item.sort(function(a,b){return ab}) : item } ).reduce( function(result,item){ return result.concat(item) },[] ); console.log(result);