我有一个对象:
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()
答案 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.keys和Array.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()