js中对象中的键如果是大写,怎么才能使用小写取到呢?例如:var a = {A:'张三',B:'李四'},要怎么使用a.a就能取到张三
在JavaScript中,对象的属性名是区分大小写的。这意味着当你创建一个对象时,你定义的属性名的大小写将决定如何访问该属性。在你的例子中,var a = {A:'张三',B:'李四'}
,你只能使用大写的'A'和'B'来访问这些属性。
如果你不能更改原始对象的定义,并且仍然想使用小写的键来访问大写键的值,那么你需要创建一个新的对象,该对象的键是小写的,并将原始对象的值复制到新对象中。例如:
var original = {A:'张三',B:'李四'}
var newObj = {a: original.A, b: original.B}
console.log(newObj.a); // 输出 "张三"
console.log(newObj.b); // 输出 "李四"
但是请注意,这种方法只适用于这个特定的例子,并且如果你有多个属性需要转换,那么这种方法可能就不适用了。在那种情况下,你可能需要编写一个函数来处理这个问题。
以下是一个使用JavaScript编写的函数示例,它将一个包含大写键的对象转换为包含小写键的对象:
function convertKeysToLowerCase(obj) {
const newObj = {};
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key.toLowerCase()] = obj[key];
}
}
return newObj;
}
你可以使用这个函数来转换包含大写键的对象,例如:
const original = { A: '张三', B: '李四' };
const converted = convertKeysToLowerCase(original);
console.log(converted.a); // 输出 "张三"
console.log(converted.b); // 输出 "李四"
当然如果是个数组也是可以的,只要改造下代码
convertKeysToLowerCase(obj,type='arr') {
if(type == 'arr'){
const newData = []
obj.forEach((item,index)=>{
const newObj = {};
for (const key in item) {
if (item.hasOwnProperty(key)) {
if(key.toLowerCase() != '_xid'){
newObj[key.toLowerCase()] = item[key];
}
}
}
newData.push(newObj)
})
return newData;
}else{
const newObj = {};
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
if(key.toLowerCase() != '_xid'){
newObj[key.toLowerCase()] = obj[key];
}
}
}
return newObj
}
}