Что не так с использованием моего оператора распространения объектов? - PullRequest
0 голосов
/ 14 декабря 2018
var color3 = {
    name: 'Black',
    type: 'special',
    rating: 1
};

var rateColor3 = (colorName, Nrating) => ({ ...colorName, Nrating });
console.log(color3.rating); ///// 1
console.log(rateColor3(color3, 6).rating);//////1
console.log(color3.rating);//////1

Я хочу использовать оператор распространения объекта, сохраняя неизменность color3, но вывод моего второго console.log - 1 вместо 6, что я делаю не так?

Ответы [ 4 ]

0 голосов
/ 14 декабря 2018

Вы создали новое свойство Nrating.Измените rating на Nrating.

var color3 = {
    name: 'Black',
    type: 'special',
    rating: 1
};

var rateColor3 = (colorName, Nrating) => ({ ...colorName, Nrating });
console.log(color3.rating); ///// 1
console.log(rateColor3(color3, 6).Nrating);//////6
console.log(color3.rating);//////1
0 голосов
/ 14 декабря 2018

Прежде всего, вы не изменяете оригинальный объект color3, а возвращаете новый.Во-вторых:

({ ...colorName, Nrating });

вернет новый объект с четвертой опорой Nrating: 6, так как это сокращение для назначения объекта.Вместо этого вам нужно будет просто присвоить значение клавише rating.

var color3 = {
    name: 'Black',
    type: 'special',
    rating: 1
};

var rateColor3 = (colorName, Nrating) => ({ ...colorName, rating: Nrating });

console.log(rateColor3(color3, 6));
0 голосов
/ 14 декабря 2018

Nrating нуждается в имени свойства

var color3 = {
   name: 'Black',
   type: 'special',
   rating: 1
};

var rateColor3 = (colorName, Nrating) => ({ ...colorName, rating: Nrating });
console.log(color3.rating); ///// 1
console.log(rateColor3(color3, 6).rating);//////6
console.log(color3.rating);//////1
0 голосов
/ 14 декабря 2018

Вы присваиваете значение 6 клавише NRating объекту, а не существующему rating.

Таким образом, ваш объект будет выглядеть следующим образом:

{
    name: 'Black',
    type: 'special',
    rating: 1,
    Nrating: 6
}

Чтобы переопределить существующее свойство rating, вам необходимо:

var rateColor3 = (colorName, Nrating) => ({ ...colorName, rating: Nrating });

или изменить свой параметр Nrating на rating.

var color3 = {
    name: 'Black',
    type: 'special',
    rating: 1
};

var rateColor3 = (colorName, rating) => ({ ...colorName, rating });

console.log(rateColor3(color3, 6));
...