Javascript 我如何理解这两段代码?
我很难理解:如果排序计数小于3,则排序逻辑如下:0-1 1,还有排序计数,比如y-x和x-y,所以有人能解释一下这段代码的意思吗,那太好了,非常感谢你 ! 片段1 换句话说,如果返回Javascript 我如何理解这两段代码?,javascript,node.js,reactjs,frontend,Javascript,Node.js,Reactjs,Frontend,我很难理解:如果排序计数小于3,则排序逻辑如下:0-1 1,还有排序计数,比如y-x和x-y,所以有人能解释一下这段代码的意思吗,那太好了,非常感谢你 ! 片段1 换句话说,如果返回-1,则a在b之前,并应在数组中向前移动;如果返回1,则a在b之后,并应在数组中向后移动;如果返回0,则a和b被视为“相等”而a保持在它所在的位置 在回调中,如果x.eat等于y.eat,则返回0,并且x不移动。如果sortCount等于1,并且x尚未被吃掉,则返回-1,并且x在数组中向后移动,否则它向前移动。如果s
-1
,则a
在b
之前,并应在数组中向前移动;如果返回1
,则a
在b
之后,并应在数组中向后移动;如果返回0
,则a
和b
被视为“相等”而a
保持在它所在的位置
在回调中,如果x.eat
等于y.eat
,则返回0
,并且x
不移动。如果sortCount
等于1,并且x
尚未被吃掉,则返回-1
,并且x
在数组中向后移动,否则它向前移动。如果sortCount
等于2
,则此操作将被反转;如果x
尚未被吃掉,则返回1
,并向前移动,否则将向后移动
使现代化
由于三元语法似乎有点混乱,我将使用if-else语句重写它
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
片段2
比较数字时,比较功能可以简单得多:
如果结果为负或小于零,则a
位于b
之前,并应在数组中向前移动;如果结果为正或大于零,则a
位于b
之后,并应在数组中向后移动,如果结果是0
,则它们相等,a
保持不变
在回调中,如果
sortCountVisit
等于1,则结果将向前移动x
如果小于y
,如果大于y
。如果sortCountVisite
等于2,则情况相反,x
如果小于y
,则向后移动,如果大于y,则向前移动。@drewerese请详细说明。@drewerese from如果sortCount我的答案充分解决了您的问题,或者仍然不清楚?@drewerese仍然不清楚
const [counterCount, setCounterCount] = useState(0);
function sortCountPeople() {
const sortedCountPeople = [...customerList];
let sortCountVisit = counterCount;
if (sortCountVisit === 2) {
sortCountVisit = 1;
setCounterCount(1);
} else {
sortCountVisit += 1;
setCounterCount(sortCountVisit);
}
sortedCountPeople.sort(function (x, y) {
if (sortCountVisit === 1) {
return x.number - y.number;
} else if (sortCountVisit === 2) {
return y.number - x.number;
}
});
setPeopleList(sortedCountPeople);
}
if (sortCount < 3) {
sortedPeople.sort(function (x, y) {
if (sortCount === 1) {
return x.eaten === y.eaten
? 0
: x.eaten === "No"
? -1
: 1;
} else if (sortCount === 2) {
return x.eaten === y.eaten
? 0
: x.eaten === "No"
? 1
: -1;
}
});
}
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
function (x, y) {
if (sortCount === 1) {
if (x.eaten === y.eaten) {
return 0;
} else if (x.eaten === "No") {
return -1;
} else {
return 1;
}
} else if (sortCount === 2) {
if (x.eaten === y.eaten) {
return 0;
} else if (x.eaten === "No") {
return 1;
} else {
return -1;
}
}
}
sortedCountPeople.sort(function (x, y) {
if (sortCountVisit === 1) {
return x.number - y.number;
} else if (sortCountVisit === 2) {
return y.number - x.number;
}
});
function compareNumbers(a, b) {
return a - b;
}