Javascript 将对象内部数组中的字符串元素大写

Javascript 将对象内部数组中的字符串元素大写,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 A

我有一个目标:

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"],
 }
我尝试了这一点,但没有成功(注意,大写函数对字符串很有效():

capitalize()。您可以使用
.map()
创建结果数组并将其分配回object元素

让结果={
“我被派去了”:[“我被派去了”,“你太棒了!”,
“对地”:[“对地”,“对月”],
“为了保护你”:[“为了保护你”]
}
Object.keys(结果).forEach(函数(键){
结果[键]=结果[键].映射(大写);
});
console.log(结果)
功能资本化{
让第一个字符=/\S/;
返回s.replace(第一个字符,函数(m){
返回m.toUpperCase();
});

}
如果您希望就地执行此操作,则需要重新分配以替换原始值。您可以使用
循环对象中的条目,以便。。。在
中,将映射的结果分配给对象键

const数据={
“我被派去了”:[“我被派去了”,“你太棒了!”,
“对地”:[“对地”,“对月”],
“为了保护你”:[“为了保护你”]
};
for(数据中的常数k){
data[k]=data[k].map(e=>e.replace(/\S/,m=>m.toUpperCase());
}

控制台日志(数据)它不起作用,因为您没有将值重新指定给
结果
对象中的属性。使用数组的
map
方法创建带有大写字符串的新数组,并将其重新指定给对象中的键

函数大写{
让第一个字符=/\S/;
返回s.replace(第一个字符,函数(m){
返回m.toUpperCase();
});
}
让结果={
“我被派去了”:[“我被派去了”,“你太棒了!”,
“对地”:[“对地”,“对月”],
“为了保护你”:[“为了保护你”]
};
for(对象项(结果)的常量[键,值]){
结果[键]=value.map(大写);
}
控制台日志(结果)我不明白
映射(大写)
您是如何启动该功能的,
()
在哪里?如果使用
array.map(e=>capitalize(e))
您引入了一个arrow函数,它接受一个参数并将该参数直接传递给
capitalize
。但是这是一个额外的不必要的间接层,因为
capitalize
本身接受一个参数——我们可以跳过包装器,直接传递
capitalize
函数,因为
map
的回调@SaraRee
map()
调用数组中每个元素上的函数,这就是它的工作方式。
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();
 });

}