Вопрос довольно простой, но я не смог найти ответ.Когда я пытаюсь переназначить элемент массива объектов другому объекту, который соответствует описанию, ничего не происходит, но когда я сначала устанавливаю элемент на null, а затем переназначаю его, это работает.Вот список объектов, которые я использую:
servers = [
{
instanceType: 'medium',
name: 'Production',
status: 'stable',
started: new Date(15, 1, 2017)
},
{
instanceType: 'large',
name: 'User Database',
status: 'stable',
started: new Date(15, 1, 2017)
},
{
instanceType: 'small',
name: 'Development Server',
status: 'offline',
started: new Date(15, 1, 2017)
},
{
instanceType: 'small',
name: 'Testing Environment Server',
status: 'stable',
started: new Date(15, 1, 2017)
}
];
Вот подход, который не работает:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sort'
})
export class SortPipe implements PipeTransform {
transform(value: any, args?: any): any {
for (const i of value) {
for (const j of value.slice(value.indexOf(i) + 1)) {
if (i.name > j.name) {
value[value.indexOf(i)] = j;
value[value.indexOf(j)] = i;
}
}
}
return value;
}
}
А вот подход, который работает:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sort'
})
export class SortPipe implements PipeTransform {
transform(value: any, args?: any): any {
for (const i of value) {
for (const j of value.slice(value.indexOf(i) + 1)) {
if (i.name > j.name) {
const index1 = value.indexOf(i);
const index2 = value.indexOf(j);
value[index1] = null;
value[index2] = null;
value[index1] = j;
value[index2] = i;
}
}
}
return value;
}
}
Это не серьезная проблема, но мне любопытно, почему она не работает в одном направлении, а в другом.Спасибо за ваше время!
РЕДАКТИРОВАТЬ 1: изменено (i.name [0]> j.name [0]) на (i.name> j.name) для согласованности.Обе проверки дали одинаковые результаты.