Pull to refresh

Comments 7

не удачный пример нужно что-то посложней
const userPrivileges = ['user', 'user', 'user', 'admin'];
const containsAdmin = userPrivileges.some( element => element === 'admin');

тоже самое можно сделать и с
['user', 'user', 'user', 'admin'].indexOf('admin')!== -1
будет быстрей работать, а так с описание согласен.

спасибо за информацию
Усложнить не трудно. Такой же пример, но indexOf не подходит:
const users = [
    { privilege: 'user' }, 
    { privilege: 'user' }, 
    { privilege: 'user' }, 
    { privilege: 'admin' },
];
const containsAdmin = users.some( element => element.privilege === 'admin');
Object.assign — в корне неверное высказывание, что это то же самое, что и spread оператор.
В том примере со спред оператором, создаётся новый объект, включающий в себя свойства других двух объектов. Но если после последнего примера вы введёте в консоли:
console.log(firstObject, secondObject, combinedObject)

то получите:
{firstName: "Robert", lastName: "Cooper"} {lastName: "Cooper"} {firstName: "Robert", lastName: "Cooper"}

Это говорит о том, что свойства объекта secondObject записаны в объект firstObject, а combinedObject — это ссылка на firstObject. И по моему скромному мнению, это офигеть как важно.

Верно. Корректный пример с assign мог бы выглядеть как-то так:


combined = Object.assign({}, first, second)

 По аналогии с
const newObject = {
  ...spreadableObject,
  carModel: 'Volkswagen'
}

можно обновлять и массивы:

const newArray = Object.assign([...arr], {[i]: value})

Заодно и Object.assign наконец-то пригодился. Или можно и тут без него?
const newArray = Object.assign([...arr], {[i]: value})

Если вы не фанат ребусов, то лучше так:


clone = [...arr];
clone[i] = value;

А если операция больно частая и строк жалко, то как-нибудь так:


clone = cpArray(arr, i, value);
clone = cpArray(arr, { [i]: value });

P.S. ИМХО

Sign up to leave a comment.