如何小写Javascript对象值?

时间:2016-10-11 07:15:26

标签: javascript lodash

我有一个JS对象数组:

ProgressMonitorDialog

我希望key2的值为小写,如下所示:

var obj = [{key1: Value1, key2: VALUE2},{key1: Value1, key2: VALUE2}]; 

如何将值从小写更改为大写?

7 个答案:

答案 0 :(得分:5)

如果我正确理解你的问题,你想要将每个对象key2属性的值更改为小写字符串(我假设它们是字符串。)

您可以使用简单的地图执行此操作。

obj = obj.map(function(a) { 
    a.key2 = a.key2.toLowerCase();
    return a;
});

这里给出的所有答案都存在一些差异,包括对象引用。在我上面的回答中,数组本身将是一个新的引用,但里面的对象将保持相同的引用。通过举例说明这一点

var mapped = obj.map(function(a) { 
    a.key2 = a.key2.toLowerCase();
    return a;
});

console.log(obj === mapped) // false
console.log(obj[0] === mapped[0]) // true

如果您使用for循环或forEach数组函数,则数组引用将保持不变。

如果你在@Piotrs回答中使用Object.assign,对象引用本身会改变,例如:

var mapped = obj.map(function (item) {
    return Object.assign(item, { key2: item.key2.toLowerCase() });
});

console.log(obj[0] === mapped[0]); //false

<击> 感谢@ user3297291

为了指出Object.assign实际上没有更改对象引用或创建新引用,它改为在assign方法的第一个参数上执行赋值,并返回对该对象的引用。

var item = { key1: 'value1', key2: 'VALUE2' };

var newItem = Object.assign(item, { key2: item.key2.toLowerCase() });
console.log(newItem === item); // true

var newRef = Object.assign({}, item, { key2: item.key2.toLowerCase() });
console.log(newRef === item); // false

请参阅this fiddle以获取参考资料

答案 1 :(得分:1)

您可以迭代数组和要更改的键,并在有字符串时指定小写值。

var array = [{ key1: 'Value1', key2: 'value2' }, { key1: 'Value1', key2: 'value2' }];

array.forEach(function (a) {
    ['key2'].forEach(function (k) {
        if (typeof a[k] === 'string') {
            a[k] = a[k].toLowerCase();
        }
    });
});

console.log(array);

带固定密钥的版本。

var array = [{ key1: 'Value1', key2: 'value2' }, { key1: 'Value1', key2: 'value2' }];

array.forEach(function (a) {
    if (typeof a.key2 === 'string') {
        a.key2 = a.key2.toLowerCase();
    }
});

console.log(array);

答案 2 :(得分:1)

您可以使用内置数组函数,例如forEach或map

// in-place
obj.forEach(function (item) {
    item.key2 = item.key2.toLowerCase()
})

var mapped = obj.map(function (item) {
    return Object.assign(item, { key2: item.key2.toLowerCase() });
})

答案 3 :(得分:1)

您只需遍历数组并为每个对象小写key2的值。

var objects = [{key1: "Value1", key2: "VALUE2"},{key1: "Value1", key2: "VALUE2"}]; 

for(var i = 0;i < objects.length;++i) {
    objects[i].key2 = objects[i].key2.toLowerCase();
}

答案 4 :(得分:1)

<强>概念: 创建一个函数,根据给定的键将项目小写。 然后,迭代项目并解析这些函数上的每个项目。

  1. 根据给定的密钥创建一个小写项目的功能
  2. function lowerObj(obj, key) { obj[''+key] = obj[''+key].toLowerCase(); return obj; }

    1. 迭代项目并解析这些功能上的每个项目
    2. var newObj = obj.map((item) => {return lowerObj(obj, 'your_key')});

      1. 因此,对于具有给定密钥的项目,您将获得newObj小写字母。
      2. 示例

        function lowerObj(obj, key) { 
           obj[''+key] = obj[''+key].toLowerCase(); 
           return obj;
        }
        var obj = [{key1: 'Value01', key2: 'Value02'}, {key1: 'Value11', key2: 'Value12'}];
        var newObj = obj.map((item) => {return lowerObj(item, 'key2')});
        console.log(JSON.stringify(newObj, null, 3));

答案 5 :(得分:1)

    caseInsensitivity=function(obj){


        Object.keys(obj).forEach(k=>{

            if(typeof obj[k]=='string'){

                    obj[k]=obj[k].toLowerCase();



            }
            else if(typeof obj[k]=='object'){

                caseInsensitivity(obj[k]);
            }else{

            }
        });return obj;

}

以转换所有值,即使这些值是嵌套对象或数组

答案 6 :(得分:0)

假设您有json对象之类。

"params": {
  "name":"LOWERNAME"
  "phone": "1234567899"
       }

像这样调用您的对象

    let user = {
    name: params.name.toLowerCase(),
    phone: params.phone
               }

您可以根据自己的情况进行修改!