Я столкнулся с проблемой сортировки массива объектов с изменением приоритета значений, в основном я хочу сортировать массив людей по их возрасту, а затем по фамилии - или просто по фамилии, имени. Я думаю, что это самое простое решение по сравнению с другими ответами.
it 'используется при вызове sortPeoples ([' array ',' of ',' properties '], reverse = false)
///////////////////////example array of peoples ///////////////////////
var peoples = [
{name: "Zach", surname: "Emergency", age: 1},
{name: "Nancy", surname: "Nurse", age: 1},
{name: "Ethel", surname: "Emergency", age: 1},
{name: "Nina", surname: "Nurse", age: 42},
{name: "Anthony", surname: "Emergency", age: 42},
{name: "Nina", surname: "Nurse", age: 32},
{name: "Ed", surname: "Emergency", age: 28},
{name: "Peter", surname: "Physician", age: 58},
{name: "Al", surname: "Emergency", age: 58},
{name: "Ruth", surname: "Registration", age: 62},
{name: "Ed", surname: "Emergency", age: 38},
{name: "Tammy", surname: "Triage", age: 29},
{name: "Alan", surname: "Emergency", age: 60},
{name: "Nina", surname: "Nurse", age: 58}
];
//////////////////////// Sorting function /////////////////////
function sortPeoples(propertyArr, reverse) {
function compare(a,b) {
var i=0;
while (propertyArr[i]) {
if (a[propertyArr[i]] < b[propertyArr[i]]) return -1;
if (a[propertyArr[i]] > b[propertyArr[i]]) return 1;
i++;
}
return 0;
}
peoples.sort(compare);
if (reverse){
peoples.reverse();
}
};
////////////////end of sorting method///////////////
function printPeoples(){
$('#output').html('');
peoples.forEach( function(person){
$('#output').append(person.surname+" "+person.name+" "+person.age+"<br>");
} )
}
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<html>
<body>
<button onclick="sortPeoples(['surname']); printPeoples()">sort by ONLY by surname ASC results in mess with same name cases</button><br>
<button onclick="sortPeoples(['surname', 'name'], true); printPeoples()">sort by surname then name DESC</button><br>
<button onclick="sortPeoples(['age']); printPeoples()">sort by AGE ASC. Same issue as in first case</button><br>
<button onclick="sortPeoples(['age', 'surname']); printPeoples()">sort by AGE and Surname ASC. Adding second field fixed it.</button><br>
<div id="output"></div>
</body>
</html>
Когда сталкивающийся с этой ситуацией, я часто ввожу закрывающий тэг сначала, тогда открывающий тэг. Это препятствует тому, чтобы IDE "помог" путем вставки закрывающего тэга, где я не хочу его. Я также интересуюсь лучшим решением, все же.
Ничто я знаю, но пишу макрос для обертывания его в любой тег, который Вы хотите, не должно быть твердым. У меня есть подобный, который обернет мой выбор в блок региона.
Я знаю, что это устарело, и вы, вероятно, уже нашли ответ, но я просто хотел бы добавить ради тех, кто может этого не знать, что это возможно в VS 2010:
ctrl-k
ctrl-s
(или щелкните правой кнопкой мыши и выберите Окружить с помощью ...
. Вы можете создать свои собственные фрагменты SurroundsWith, если вы не нашли то, что ищете:
File
, а затем щелкните New
и выберите тип файла из XML
. Файл
нажмите Сохранить
. Сохранить как
выберите ] Все файлы (*. *)
. Имя файла
введите имя файла с расширением .snippet
. Сохранить
. Введите в XML-файл что-то вроде следующего примера:
<CodeSnippet Format="1.1.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<Header>
<Title>ul-div</Title>
<Author>Microsoft Corporation</Author>
<Shortcut>ul>li</Shortcut>
<Description>Wrap in a ul and then an li</Description>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>selected</ID>
<ToolTip>content</ToolTip>
<Default>content</Default>
</Literal>
</Declarations>
<Code Language="html"><![CDATA[<ul><li>$selected$</li></ul>$end$]]></Code>
</Snippet>
</CodeSnippet>
Инструменты
> Диспетчер фрагментов кода
. Импортируйте
и перейдите к только что созданному фрагменту. Мои фрагменты HTML
и нажмите Готово
, а затем ОК
. После этого у вас будет новый блестящий фрагмент HTML, в который можно обернуть материал!