要按数字对对象数组进行排序,但忽略字符串,可以使用JavaScript的数组排序方法Array.sort()
结合自定义比较函数来实现。
以下是一个示例代码:
const arr = [
{ id: 1, value: "10" },
{ id: 2, value: "5" },
{ id: 3, value: "7" },
{ id: 4, value: "abc" },
{ id: 5, value: "20" }
];
function compareNumbers(a, b) {
// 仅在两个对象的value属性都是数字时进行比较
if (!isNaN(a.value) && !isNaN(b.value)) {
return Number(a.value) - Number(b.value);
}
// 对于其他情况,保持原始的顺序不变
return 0;
}
arr.sort(compareNumbers);
console.log(arr);
在上面的代码中,我们定义了一个自定义的比较函数compareNumbers
,在比较两个对象时,仅当它们的value
属性都是数字时才进行比较。如果其中一个或两个对象的value
属性是字符串,则返回0,即保持原始的顺序不变。
然后,我们使用arr.sort(compareNumbers)
对数组进行排序,并在控制台上打印结果。输出结果将会是按数字排序的对象数组,但字符串保持原始的顺序不变。
请注意,这里的代码假定了对象的value
属性是字符串类型。如果value
属性是其他类型,例如布尔值或日期等,可能需要适当修改比较函数来适应不同的情况。
上一篇:按数字排序的 Bokeh 列
下一篇:按数字排序列名