我已经解决了对数组进行排序的麻烦,该数组应该由以下两个要求进行排序:
true
上具有必需属性的属性应列在首位。我已经做到了,而且可行,但是我觉得这里有一个聪明的方法...:-|
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)
有什么建议吗?
答案 0 :(得分:3)
您可以像在下一个示例中那样进行操作。
说明::TextBox
用于将布尔值转换为数字,如果这些布尔值之差的结果为myTextBox.Select(myTextBox.Text.Length, 0);
,则使用{{ 1}}字段中包含localeCompare()。
unary plus