Javascript 我可以从reduce函数中的属性名中删除空格吗?
我想出了以下方法来减少我的数据:Javascript 我可以从reduce函数中的属性名中删除空格吗?,javascript,Javascript,我想出了以下方法来减少我的数据: data = [{ id: 99991, name: "NoData1", title: "No Data" }, { id: 99992, name: "NoData2", title: "No Data" }, { id: 99993, name: "NoData3", title: "No Data" }]; var dataMapName = data.reduce((rv, v) => { rv[v.n
data = [{ id: 99991, name: "NoData1", title: "No Data" },
{ id: 99992, name: "NoData2", title: "No Data" },
{ id: 99993, name: "NoData3", title: "No Data" }];
var dataMapName = data.reduce((rv, v) => {
rv[v.name] = v;
return rv;
}, {}) : null
现在,如果我想访问id,我可以输入以下内容:
var NoData1Id = dataMapName['NoData1'].id
或
但是,我的某些数据的名称中有空格,例如:
data = [{ id: 99991, name: "NoData1", title: "No Data" },
{ id: 99992, name: "NoData2", title: "No Data" },
{ id: 99993, name: "NoData3", title: "No Data" },
{ id: 99994, name: "NoData 4", title: "No Data" },
];
是否有一种方法可以更改我的函数,使其在缩减过程中首先从名称中删除空格,以便我仍然可以输入:
var NoData4Id = dataMapName.NoData4.id
您可以使用regex从name中删除所有空格
\s
将匹配所有空格字符,如制表符、空格等。g
标志用于匹配所有空格
rv[v.name.replace(/\s/g, '')] = v;
好吧,然后用空字符串替换空格
var dataMapName = data.reduce((rv, v) => {
rv[v.name.replace(' ', '')] = v;
return rv;
}, {}) : null
另一个选择是按原样使用数据,只需确保使用括号表示法
var NoData4Id = dataMapName.["NoData 4"].id
插入时,您可以更改地图的键:
data = [{ id: 99991, name: "NoData1", title: "No Data" },
{ id: 99992, name: "NoData 2", title: "No Data" },
{ id: 99993, name: "NoData3", title: "No Data" }];
var dataMapName = data.reduce((rv, v) => {
var vName = v.name.replace(/\s/g,'');
rv[vName] = v;
return rv;
}, {}) : null
:null
有什么作用?如果其中有两个空格而不是一个,我会使用/\s+/g
。@sidneylebrand g标志会删除所有空格,不管怎样what@SidneyLiebrand请再看一遍问题的最后一行是的[这篇文章已经编辑过]是在我打字时出现的;)
data = [{ id: 99991, name: "NoData1", title: "No Data" },
{ id: 99992, name: "NoData 2", title: "No Data" },
{ id: 99993, name: "NoData3", title: "No Data" }];
var dataMapName = data.reduce((rv, v) => {
var vName = v.name.replace(/\s/g,'');
rv[vName] = v;
return rv;
}, {}) : null