Найти свойство и заменить все его значения - lodash - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть массив объектов:

users = [
  {userId: 23, userName:"foo"},
  {userId: 34, userName:"wrong"},
  {userId: 45, userName:"baz"},
  {userId: 56, userName:"..."},
]

Допустим, я хочу найти все объекты со свойством userName и заменить значение updatedUser:

updatedUser = {"foo"}

, поэтому вв этом случае я получу новый массив, например:

users = [
  {userId: 23, userName:"foo"},
  {userId: 34, userName:"foo"},
  {userId: 45, userName:"foo"},
  {userId: 56, userName:"foo"}
]

Я использую lodash, но не против родного.

Любая помощь, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

Вы можете назначить новый объект с требуемым значением.

var users = [{ userId: 23, userName: "foo" }, { userId: 34, userName: "wrong" }, { userId: 45, userName: "baz" }, { userId: 56, userName: "..." }],
    update = { userName: "foo" },
    result = users.map(o => Object.assign({}, o, update));

console.log(result);
0 голосов
/ 06 февраля 2019

вы можете пользователей Array.prototype.map и переопределить поле userName для каждого элемента

const users = [
  {userId: 23, userName:"foo"},
  {userId: 34, userName:"wrong"},
  {userId: 45, userName:"baz"},
  {userId: 56, userName:""}
];

const result = users.map(u => ({...u, userName: "foo"}));
console.log(result);
0 голосов
/ 06 февраля 2019

Зачем вам нужен lodash, вы можете сделать это просто следующим образом.

users.forEach((el)=>{el.userName= "foo";}) 

users = [
  {userId: 23, userName:"foo"},
  {userId: 34, userName:"wrong"},
  {userId: 45, userName:"baz"},
  {userId: 56, userName:"..."}
]

users.forEach((el)=>{el.userName = "foo";})
console.log(users);

Тем не менее, если вы предпочитаете использовать lodash, вы можете попробовать выполнить следующее.

_.setProperty( users, 'userName', 'foo' );
...