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

时间:2015-11-19 16:45:51

标签: javascript coffeescript lodash

我有一个对象:

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

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

z = {x: 'hhjjhjhhhhhjh', y: 'yyyyy', c: 'ssss'}

如何一次性完成此操作,也许使用lodash?现在我在做:

z.x = z.x.toLowerCase()
z.y = z.y.toLowerCase()
z.c = z.c.toLowerCase()

6 个答案:

答案 0 :(得分:14)

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

_.mapValues(z, _.method('toLowerCase'));

答案 1 :(得分:5)

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

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' }

非常整洁,嗯?

答案 2 :(得分:4)

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



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

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

console.log(z);




我不知道lodash能否改善这一点。

答案 3 :(得分:1)

在香草js:

Object.keys(z).forEach(function ( key ) {
    z[key] = z[key].toLowerCase();
});

Lodash可能有更短的forEach语法。

答案 4 :(得分:1)

如果您想要一个没有lodash的解决方案,可以使用Object.keysArray.prototype.reduce

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

var lowerZ = Object.keys(z).reduce(function(obj, currentKey) {
    obj[currentKey] = z[currentKey].toLowerCase();
    return obj;
}, {});

答案 5 :(得分:0)

CoffeeScript解决方案:

z = x: 'HHjjhjhHHHhjh', y: 'YYYYY', c: 'ssss'

for key, val of z
    z[key] = val.toLowerCase()