首页 > 解决方案 > 根据条件重新排列javascript数组

问题描述

重新排列 javascript 数组值,结果为 true 的用户必须从最后一个索引显示。

如果结果值为真,那么他们的对象应该从最后一个对象开始,例如 Zahir 和harman 应该是最后两个对象。

const scorecard = [
  {
        name: "Zahir",
        score: 23,
        result: true,
  }, 
  {
        name: "Kabir",
        score: 13,
        result: false
  },
  {
        name: "Kunal",
        score: 29
  },
  {
        name: "Arnav",
        score: 42,
        result: false
  },
  {
        name: "Harman",
        score: 19,
        result: true
  },
  {
        name: "Rohit",
        score: 41
  },
  {
        name: "Rajan",
        score: 34
  }
];

 scorecard.sort(function(a, b) {
    if (a.result == true)
        return -1;
    else
        return 0;
});

console.log("s", scorecard)

标签: javascript

解决方案


你的代码很好。只需像这样替换您的“if”语法:

if (!a.result) return -1;
else return 0;

或者像这样优化代码:

const scorecard = [
  {
        name: "Zahir",
        score: 23,
        result: true,
  }, 
  {
        name: "Kabir",
        score: 13,
        result: false
  },
  {
        name: "Kunal",
        score: 29
  },
  {
        name: "Arnav",
        score: 42,
        result: false
  },
  {
        name: "Harman",
        score: 19,
        result: true
  },
  {
        name: "Rohit",
        score: 41
  },
  {
        name: "Rajan",
        score: 34
  }
];

 scorecard.sort(({result}) => !result ? -1 : 0);

console.log("s", scorecard)

此外,您可以使用.reverse()(更多信息在这里

像这样:

const scorecard = [
  {
        name: "Zahir",
        score: 23,
        result: true,
  }, 
  {
        name: "Kabir",
        score: 13,
        result: false
  },
  {
        name: "Kunal",
        score: 29
  },
  {
        name: "Arnav",
        score: 42,
        result: false
  },
  {
        name: "Harman",
        score: 19,
        result: true
  },
  {
        name: "Rohit",
        score: 41
  },
  {
        name: "Rajan",
        score: 34
  }
];

 scorecard.sort(({result}) => result ? -1 : 0);

console.log("s", scorecard)
console.log("s reverse", scorecard.reverse())

但我更喜欢你的第一个选择


推荐阅读