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)`