Javascript 以适当的格式创建对象
我试图创建一个特定格式的对象,但在获取所需数据时遇到了一些问题 这是我的职责:Javascript 以适当的格式创建对象,javascript,jquery,arrays,json,object,Javascript,Jquery,Arrays,Json,Object,我试图创建一个特定格式的对象,但在获取所需数据时遇到了一些问题 这是我的职责: arr.forEach(headers => { let heads = headers.replace(/_/g, ' '); const metrics = { 'cht': { headers: { 'name': heads } } } console.log(
arr.forEach(headers => {
let heads = headers.replace(/_/g, ' ');
const metrics = {
'cht': {
headers: {
'name': heads
}
}
}
console.log(metrics);
});
我的结果是:
{cht: {headers: {name: "Hello World"}}}
预期结果:
{cht: {Hello_World: {name: "Hello World"}}}
为什么我的对象中的值
标题(要剪切)没有被替换?我需要标题是Hello\u World
指定为替换的“标题”的值,您已将其设置为变量“标题”
然后将其指定为属性“name”的值。
您的意思是将其设置为标题的属性吗
let heads = headers.replace(/_/g, ' ');
const metrics = {
'cht': {
headers: {
heads: 'someValue'
}
}
}
你可以向后看,replace中的第一个参数是要查找的RegExp,第二个参数是要用什么来替换它。它应该是标题。替换(//g,'.''.')
假设您提供的是标题='Hello World'
<正在替换代码>标题
您的替换模式正在查找要替换为空白字符的文本。
但听起来你正试图做相反的事情
replace(/\s/g,“,”)
或简单地replace(“,”)
将导致'Hello\u World'
创建对象时,属性键(位于:)通常不作为变量处理,而是作为名称使用,与键入的完全相同
在较新版本的Javascript(ECMAScript 6 on)中,可以在名称周围放上括号,以便将变量值本身用作属性键
arr.forEach(headers => {
let heads = headers.replace(/_/g, ' ');
const metrics = {
cht: {
[headers]: heads
}
}
console.log(metrics);
});
使用split
和map
获得预期输出
const capitalize=(str)=>`${str.charAt(0.toUpperCase()}${str.slice(1)}`;
常量规范化=(name=”“)=>{
如果(!name)返回名称;
返回名称.split(/\s+/).map(大写).join(“”);
};
常量转换=(arr)=>{
arr.forEach((headers=”“)=>{
让heads=标准化(headers);
常数度量={
红隧:{
[heads]:{name:headers}
},
};
console.log(度量);
});
};
const arr=[“你好,世界”,“测试一些东西”];
变换(arr)代码>您可以使用以下命令
headers.split(" ").join("_");
或
你所说的被替换是什么意思?你没有对标题做任何操作。反向替换,src到des:标题。替换(//g,'.''.')
我做了。但是值headers
仍然是sameI添加的预期结果,只需在headers
周围放一个括号,比如:'cht':{[headers]:{'name':heads}
我这样做了。但是值头仍然是sameI添加的预期结果。您的输入['Hello World']
或['Hello\u World']
?我添加了预期结果头='Hello\u World'
和头=头。替换(/\ug')
这使得head=Hello World
我看到问题已经更新了。我的答案不再适用。我想说@ThisIsNoZaku在问题中提供的新上下文中有正确的答案。key应该按OP预期大写:{cht:{Hello_World:{name:“Hello World”}}
我有没有办法在forEach循环之外使用度量值
?
headers.split(" ").join("_");
headers.replace(/ /g, '_')