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

Javascript 我如何理解这两段代码?

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

我很难理解:如果排序计数小于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
在数组中向后移动,否则它向前移动。如果
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;
}