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

7

我有一个对象:

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()

1
只需遍历对象的属性即可。如果您不知道如何做,请参见https://dev59.com/tnVD5IYBdhLWcg3wGXpI。 - Felix Kling
7个回答

25
使用lodash,你可以调用mapValues()来映射对象的值,并且你可以使用method()来创建迭代器:
_.mapValues(z, _.method('toLowerCase'));

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

7

很多你可能会使用 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' }

相当不错,不是吗?

浏览器对此的支持还可以,但并不是很好。可能因人而异。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Browser_compatibility - Molomby

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);

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

2
在纯JavaScript中:
Object.keys(z).forEach(function ( key ) {
    z[key] = z[key].toLowerCase();
});
可能有更短的语法。

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;
}, {});

0

CoffeeScript 解决方案:

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

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

0
for (var key in object) {
    //enter code here...
    const value = object[key].toLowerCase();
    console.log(value);
    console.log(`${key}: ${value}`);
}

请阅读如何撰写好的答案?。虽然这个代码块可能回答了OP的问题,但如果您解释一下这段代码与问题中的代码有何不同,您做了哪些更改,为什么要更改以及为什么这样解决问题而不引入其他问题,那么这个答案将会更加有用。- 来自审核 - Saeed Zhiany

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接