javascript - 将对象内的数组内的字符串元素大写

标签 javascript

我有这个对象:

let result = {
'i was sent': ["I was sent", "you were Awesome!"],
'to earth': ["to Earth" , "To moon"],
'to protect you': ["to protect you"]
}

如果我们想要将数组中所有元素的每个首字母大写并返回结果,如下所示:

 let result = {
    'i was sent you to': ["I was sent", "You were Awesome!"],
    'to earth': ["To Earth" , "To moon"],
    'to protect you': ["To protect you"],
 }

我尝试过此操作,但没有成功(请注意,大写函数适用于字符串):

Object.keys(result).forEach(function(key) {

     result[key].forEach(function(e) {
     capitalize(result[key][e]);
     });
});

console.log(result)

function capitalize(s) {
    let first_char = /\S/;
    return s.replace(first_char, function(m) {
    return m.toUpperCase();
 });

}

最佳答案

capitalize() 不会就地修改字符串,您需要使用返回的值。您可以使用 .map() 创建结果数组并将其分配回对象元素。

let result = {
  'i was sent': ["I was sent", "you were Awesome!"],
  'to earth': ["to Earth", "To moon"],
  'to protect you': ["to protect you"]
}

Object.keys(result).forEach(function(key) {
  result[key] = result[key].map(capitalize);
});

console.log(result)

function capitalize(s) {
  let first_char = /\S/;
  return s.replace(first_char, function(m) {
    return m.toUpperCase();
  });
}

关于javascript - 将对象内的数组内的字符串元素大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59725148/

相关文章:

javascript - 如何删除 FullCalendar 中的 "previous"、 "next"和 "today"按钮

javascript - 为什么 Javascript $(document.body) 不能加载到源文件之外?

javascript - Safari 在提交表单或重定向时暂停 CSS3 动画

javascript - 使用javascript的图像溢出效果

javascript - 将下拉菜单按钮宽度设置为在 VuetifyJS 组件中阻塞

javascript - 根据依赖项列表订购对象数组?

javascript - 使模糊算法适用于 Canvas 图像数据?

javascript - Node 模块提供 getter 和 setter

javascript - 在 Javascript 中打开一个 blob

javascript - 重新加载 javascript 和 CSS,最佳实践 : PHP