Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何按字母顺序(数字除外)对对象数组进行排序?_Javascript_Arrays_Sorting_Object - Fatal编程技术网

Javascript 如何按字母顺序(数字除外)对对象数组进行排序?

Javascript 如何按字母顺序(数字除外)对对象数组进行排序?,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,我有这个阵列: sampleArray = [ {name: 'product-2'}, {name: 'product-15'}, {name: 'product-3'}, {name: 'product-10'} ] 我想使用属性name对其排序,除了字符串中的数字之外,按字母顺序排序 我正在将排序与本地比较结合使用: sampleArray.sort((a, b) => a.name.localeCompare(b.name)) 但是,由于name是一个包含数字的

我有这个阵列:

sampleArray = [
  {name: 'product-2'},
  {name: 'product-15'},
  {name: 'product-3'},
  {name: 'product-10'}
]
我想使用属性
name
对其排序,除了字符串中的数字之外,按字母顺序排序

我正在将
排序
本地比较
结合使用:

sampleArray.sort((a, b) => a.name.localeCompare(b.name))
但是,由于
name
是一个包含数字的字符串,因此我得到以下信息:

sampleArray = [
  {name: 'product-10'},
  {name: 'product-15'},
  {name: 'product-2'},
  {name: 'product-3'}
]
考虑到这些数字,我需要把它按正确的顺序排列。这将是什么:

sampleArray = [
  {name: 'product-2'},
  {name: 'product-3'},
  {name: 'product-10'},
  {name: 'product-15'}
]
我知道,如果我只使用数字,我可以做到:

sampleArray.sort((a,b) => a - b)
但事实并非如此

我该如何解决这个问题?

您已经做了一半,接受了一个选项,您可以使用字符串的自然排序

const
数组=[{name:'product-2'},{name:'product-15'},{name:'product-3'},{name:'product-10'}];
array.sort((a,b)=>a.name.localeCompare(
b、 名字,
未定义,
{numeric:true,灵敏度:'base'}
));

console.log(数组)@zcoop98不,我已经看到了。它给了我和我的代码一样的输出。是的,我意识到你的问题在扣动扳机后就很明显了。对不起!