我有一个JS对象数组:
ProgressMonitorDialog
我希望key2的值为小写,如下所示:
var obj = [{key1: Value1, key2: VALUE2},{key1: Value1, key2: VALUE2}];
如何将值从小写更改为大写?
答案 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)
<强>概念:强> 创建一个函数,根据给定的键将项目小写。 然后,迭代项目并解析这些函数上的每个项目。
function lowerObj(obj, key) {
obj[''+key] = obj[''+key].toLowerCase();
return obj;
}
var newObj = obj.map((item) => {return lowerObj(obj, 'your_key')});
newObj
小写字母。示例强>
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
}
您可以根据自己的情况进行修改!