我们如何在javascript中排序数组对象?[duplicate]

nwlqm0z1  于 2023-02-11  发布在  Java
关注(0)|答案(4)|浏览(129)
    • 此问题在此处已有答案**:

Sort array of objects by string property value(57个答案)
13小时前关门了。
我正在尝试按颜色对对象数组进行排序:
验证码:

const colors = [
  {
    "color": "purple",
    "type": true
   
  },
  {
    "color": "red",
    "type": false
  },
{
    "color": "green",
    "type": true
  },
{
    "color": "black",
    "type": false
  },
{
    "color": "pink",
    "type": true
  }]
  

const list = colors.sort((a) => a.color);
console.log(list);

感谢您的支持!

gjmwrych

gjmwrych1#

这段代码将帮助你根据颜色值按升序排序。

const colors = [
      {
        "color": "purple",
        "type": true
       
      },
      {
        "color": "red",
        "type": false
      },
      {
        "color": "green",
        "type": true
      },
      {
        "color": "black",
        "type": false
      },
      {
        "color": "pink",
        "type": true
      }
    ]
    
    const sortedColors = colors.sort((a, b) => {
      if (a.color < b.color) {
        return -1;
      }
      if (a.color > b.color) {
        return 1;
      }
      return 0;
    });
    
    console.log(sortedColors);
l2osamch

l2osamch2#

JavaScript中的Array.prototype.sort接受带有两个参数的回调。
来自MDN,
| compareFn(a,b)返回值|排序次序|
| - ------|- ------|
| 〉0|将a排在b之后|
| 〈0|先排序a后排序b|
| === 0|保持a和b的原始顺序|
但是,您可以使用内置的String.prototype.localeCompare来比较两个字符串,而不是编写自己的比较函数。

const colors = [
  {
    "color": "purple",
    "type": true
   
  },
  {
    "color": "red",
    "type": false
  },
{
    "color": "green",
    "type": true
  },
{
    "color": "black",
    "type": false
  },
{
    "color": "pink",
    "type": true
  }]
  

const list = colors.sort((a, b) => a.color.localeCompare(b.color));
console.log(list);
xqk2d5yq

xqk2d5yq3#

试试这个,会有用的。
您可以根据需要改变条件,谢谢.

const colors = [{
    "color": "purple",
    "type": true

  },
  {
    "color": "red",
    "type": false
  },
  {
    "color": "green",
    "type": true
  },
  {
    "color": "black",
    "type": false
  },
  {
    "color": "pink",
    "type": true
  }
]

const result = colors.sort((a, b) => (a.color > b.color) ? 1 : ((b.color > a.color) ? -1 : 0))
console.log(result);
hlswsv35

hlswsv354#

使用sort(),您希望比较数组中的两个元素,因此需要在其中放置两个参数。

const colors = [
  {
    "color": "purple",
    "type": true
   
  },
  {
    "color": "red",
    "type": false
  },
{
    "color": "green",
    "type": true
  },
{
    "color": "black",
    "type": false
  },
{
    "color": "pink",
    "type": true
  }]
  

const list = colors.sort((a, b) => a.color > b.color);
console.log(list);

相关问题