我有一个JS对象数组:
var obj = [{key1: Value1, key2: VALUE2},{key1: Value1, key2: VALUE2}];
Run Code Online (Sandbox Code Playgroud)
我希望key2的值为小写,如下所示:
var obj = [{key1: Value1, key2: value2},{key1: Value1, key2: value2}];
Run Code Online (Sandbox Code Playgroud)
如何将值从小写更改为大写?
如果我正确理解你的问题,你想要改变每个对象key2
属性的值,使其成为小写字符串(我假设它们是字符串.)
您可以使用简单的地图执行此操作.
obj = obj.map(function(a) {
a.key2 = a.key2.toLowerCase();
return a;
});
Run Code Online (Sandbox Code Playgroud)
这里给出的所有答案都存在一些差异,包括对象引用.在我上面的回答中,数组本身将是一个新的引用,但里面的对象将保持相同的引用.通过举例的方式澄清这一点
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
Run Code Online (Sandbox Code Playgroud)
如果您正在使用for
循环或forEach
数组函数,那么数组引用将保持不变.
如果您Object.assign
在@Piotrs答案中使用,则对象引用本身将更改,例如:
var mapped = obj.map(function (item) {
return Object.assign(item, { key2: item.key2.toLowerCase() });
});
console.log(obj[0] === mapped[0]); //false
Run Code Online (Sandbox Code Playgroud)
感谢@ 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
Run Code Online (Sandbox Code Playgroud)
看到这个小提琴,以供参考
归档时间: |
|
查看次数: |
4043 次 |
最近记录: |