使用lodash将所有对象值转换为小写

Jes*_*ria 5 javascript coffeescript lodash

我有一个对象:

z = {x: 'HHjjhjhHHHhjh', y: 'YYYYY', c: 'ssss'}
Run Code Online (Sandbox Code Playgroud)

我需要将所有值转换为小写

z = {x: 'hhjjhjhhhhhjh', y: 'yyyyy', c: 'ssss'}
Run Code Online (Sandbox Code Playgroud)

怎么一次这样做,也许用lodash?现在我在做:

z.x = z.x.toLowerCase()
z.y = z.y.toLowerCase()
z.c = z.c.toLowerCase()
Run Code Online (Sandbox Code Playgroud)

Ada*_*uch 18

使用lodash,您可以调用mapValues()来映射对象值,您可以使用method()来创建iteratee:

_.mapValues(z, _.method('toLowerCase'));
Run Code Online (Sandbox Code Playgroud)

  • 如果您的对象具有非字符串值,它将删除它们。最好检查类型`_.mapValues(objs, function(s){ return _.isString(s) ? s.toLowerCase() : s; });` **来源:** http://stackoverflow.com /questions/15510712/lowercase-of-object-value-in-array-with-underscore-js (2认同)

Ric*_*ock 5

在 JavaScript 中,您可以使用循环遍历对象的键for...in

var z = {x: 'HHjjhjhHHHhjh', y: 'YYYYY', c: 'ssss'};

for(var i in z) {
  z[i]= z[i].toLowerCase();
}

console.log(z);
Run Code Online (Sandbox Code Playgroud)

我不知道 lodash 是否可以改进这一点。


Mol*_*mby 5

很多你使用Lodash的东西可以在ES6/ES2015中轻松完成.例如,在这种情况下,您可以:

var z = { x: 'HHjjhjhHHHhjh', y: 'YYYYY', c: 'ssss' };
var y = Object.keys(z).reduce((n, k) => (n[k] = z[k].toLowerCase(), n), {});

console.log(y);
// { x: 'hhjjhjhhhhhjh', y: 'yyyyy', c: 'ssss' }
Run Code Online (Sandbox Code Playgroud)

挺整洁的,嗯?