【问题标题】:Capitalizing keys of each element in an object in VuejsVuejs中对象中每个元素的键大写
【发布时间】:2020-11-03 08:48:25
【问题描述】:

我有这个对象:

{
'application': "BP 9ALT 8 123",
 'address': "935 HAMPTON CRES",
 'unit': null,
 'status': "COMPLETED -ALL INSP SIGNED OFF"
}

我想让每个键都大写:

{
 'Application': "BP 9ALT 8 123",
 'Address': "935 HAMPTON CRES",
 'Unit': null,
 'Status': "COMPLETED -ALL INSP SIGNED OFF"
}

在 Vuejs 中有什么简单的方法?

【问题讨论】:

标签: javascript arrays vue.js object


【解决方案1】:

试试这个解决方案

const object = {
  application: "BP 9ALT 8 123",
  address: "935 HAMPTON CRES",
  unit: null,
  status: "COMPLETED -ALL INSP SIGNED OFF",
};

const output = Object.entries(object).map(([key, value]) => [
  key[0].toUpperCase() + key.slice(1),
  value,
]);

console.log(Object.fromEntries(output));

【讨论】:

  • 旁注:- 无需拆分和加入,只需执行 key.slice(1)
  • 感谢代码狂人。迭代器。并且不需要join
  • 唯一的事情是它不会做嵌套对象,不是 OP 指定它,但你会期望它来自键函数的大写字母
【解决方案2】:

使用Array.reduce()String.toUpperCase(),如下所示

var obj = {
 'application': "BP 9ALT 8 123",
 'address': "935 HAMPTON CRES",
 'unit': null,
 'status': "COMPLETED -ALL INSP SIGNED OFF"
}

var resultOne = Object.entries(obj).reduce(function(acc, value) {
  acc[value[0].charAt(0).toUpperCase() + value[0].slice(1)] = value[1];
  return acc;
}, {});

// Updated

// In the reduce anonymous function, instead of value you can place [key, value]. So there will be no indexing
var resultTwo= Object.entries(obj).reduce(function(acc, [key, value]) {
  acc[key[0].toUpperCase() + key.slice(1)] = value;
  return acc;
}, {});



console.log(resultOne);
console.log(resultTwo);

【讨论】:

  • 旁注:- Op 只希望密钥的第一个字符大写,您的解决方案将整个密钥大写
  • @CodeManiac 是我的错误,更新它;)。谢谢指出
猜你喜欢
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
相关资源
最近更新 更多