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
的回调@SaraReemap()
调用数组中每个元素上的函数,这就是它的工作方式。
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();
});
}