Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/15.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 - Fatal编程技术网

JavaScript:将数组元素排序为;“真实的”;字段值排在第一位

JavaScript:将数组元素排序为;“真实的”;字段值排在第一位,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个对象数组,其中每个对象都有一个名为field的属性。字段属性的某些值是真实的: const arr=[ {field:true}, {field:false}, {field:false}, {field:true}, {field:true}, {字段:false} ] 我想以这样一种方式对其进行排序,即字段true的所有元素必须排在第一位。我该怎么做 目前,我的代码如下所示: arr.sort((x,y)=>x.field)/?? 您可以获取布尔值的增量。由于true为1,而fal

我有一个对象数组,其中每个对象都有一个名为
field
的属性。
字段
属性的某些值是真实的:

const arr=[
{field:true},
{field:false},
{field:false},
{field:true},
{field:true},
{字段:false}
]
我想以这样一种方式对其进行排序,即字段
true
的所有元素必须排在第一位。我该怎么做

目前,我的代码如下所示:

arr.sort((x,y)=>x.field)/??

您可以获取布尔值的增量。由于
true
为1,而
false
为零,因此需要反转这些值

const数组=[{field:true},{field:false},{field:false},{field:true},{field:true},{field:false}]
排序((a,b)=>b.field-a.field);
console.log(数组)

.as console wrapper{max height:100%!important;top:0;}
排序的返回值应该是一个数字,这样您就可以减去对象的
字段
属性


常数arr=[
{field:true},
{field:false},
{field:false},
{field:true},
{field:true},
{字段:false}
]
arr.sort((a,b)=>b.field-a.field);

console.log(arr)
另一种方法是使用
Array#sort
并返回一个排序键
-1
1
明确性,这将实现所需的结果:

const数组=[
{field:true},
{field:false},
{field:false},
{field:true},
{field:true},
{字段:false}
]
/*当项目字段值为时,为排序键返回-1
truthy bubbles是否已将该项排序到列表顶部
大堆Return 1将项目推到已排序项目的底部
排列*/
array.sort(item=>item.field?-1:1);

console.log(数组)那么您当前代码中的问题是什么>/它不起作用。数组没有排序,它只剩下我声明的数组。为什么说“truthy”并给出所有布尔值?