Javascript 类型脚本减去两个布尔值

Javascript 类型脚本减去两个布尔值,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,我有一个数组: main = [{ data: x, numberField: 1; }, { data: y, numberField: 2; }, { data: x, numberField: 3; }, { data:z numberField: 4; }, { data: q numb

我有一个数组:

main = [{
           data: x,
           numberField:  1;
 }, {      data: y,
           numberField:  2;
 }, {      data: x,
           numberField:  3;
 },
  {        data:z
           numberField:  4;
 },
    {      data: q
           numberField:  5;
 }]
fixedElements = [ 3, 5]
我需要:

 fixedElements .includes(a.numberField) - fixedElements .includes(b.numberField) 
因为我需要检查两个即将到来的值是否在数组a中,而不是对它们进行排序,而是对其余的进行排序。 当我尝试这样做时,脚本抛出一个错误

  left/right hand-side of the argument needs to be of type any or number.
我的初始排序功能为:

  sort(a,b) {
  if(a.numberField > b.numberField)
       return -1

  if(a.numberField < b.numberField)
     return 1;

    }
排序(a、b){
如果(a.numberField>b.numberField)
返回-1
if(a.numberField

所以我想检查接下来的a或b是否在fixedElements数组中,并将它们放在最后。还有其他方法吗?

您可以使用
+
符号()将布尔数转换为数字:

这是排序逻辑(-check console):

const main=[{“data”:“x”,“numberField”:1},{“data”:“y”,“numberField”:2},{“data”:“x”,“numberField”:3},{“data”:“z”,“numberField”:4},{“data”:“q”,“numberField”:5}]
//我使用的是集合而不是数组,因为Set.has比array.includes快
常量固定元素=新集合([3,5])
main.sort((a,b)=>{
常数aF=固定元素.has(a.numberField)
常数bF=固定元素has(b.numberField)
如果(!aF&&!bF)返回b.numberField-a.numberField
返回+aF-+bF
})

console.log(main)
您可以使用自定义排序功能,检查
numberField
值是否存在于
fixedElements
数组中,并保持它们未排序,否则根据
numberField
值对它们进行排序

let main=[{data:'x',numberField:1},{data:'y',numberField:2},{data:'x',numberField:3},{data:'z',numberField:4},{data:'q',numberField:5}],
固定元素=[3,5];
main.sort((a,b)=>{
if([a,b]。某些({numberField})=>fixedElements.includes(numberField)))
return+fixedElements.includes(a.numberField)-+fixedElements.includes(b.numberField);
其他的
返回+b.numberField-+a.numberField
});
控制台日志(主)您可以在方法内部使用方法进行检查

var数组=[{
数据:'x',
数字域:1
}, {
数据:'y',
数字域:2
}, {
数据:'x',
数字域:3
}, {
数据:“z”,
数字域:4
}, {
数据:“q”,
数字域:5
}],
固定元素=[3,5];
array.sort((a,b)=>{
a=+a.numberField;
b=+b.numberField;
返回(固定元素。包括(a)-固定元素。包括(b)| | b-a);
});

console.log(array)
预期的输出是什么?顺序是:3,5是最后一个,第一个是降序的<代码>4,2,1,3,5
+fixedElements.includes(a.numberField) - +fixedElements.includes(b.numberField)`