数组排序有两个要求

时间:2019-01-17 16:44:37

标签: javascript arrays sorting

我已经解决了对数组进行排序的麻烦,该数组应该由以下两个要求进行排序:

  1. true上具有必需属性的属性应列在首位。
  2. 然后按字母顺序

我已经做到了,而且可行,但是我觉得这里有一个聪明的方法...:-|

const originalAttributes = [{
    name: "P",
    required: false
  },
  {
    name: "D",
    required: true
  },
  {
    name: "W",
    required: true
  },
  {
    name: "A",
    required: true
  },
  {
    name: "N",
    required: false
  },
  {
    name: "S",
    required: false
  }
];

function listNames(originalAttributes) {
  originalAttributes.forEach(item => {
    console.log(`${item.name} ${item.required ? '--R' : ''}`);
  })
}

listNames(originalAttributes)

console.log('------------------------------');

const sortedAttributes = originalAttributes.sort((a, b) => {
  if (a.required && b.required) {
    return a.name < b.name ? -1 : 1;
  } else if (a.required) {
    return -1
  } else if (!b.required) {
    return a.name < b.name ? -1 : 1;
  }
});

listNames(sortedAttributes)

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您可以像在下一个示例中那样进行操作。

说明:TextBox用于将布尔值转换为数字,如果这些布尔值之差的结果为myTextBox.Select(myTextBox.Text.Length, 0); ,则使用{{ 1}}字段中包含localeCompare()

unary plus