Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以从reduce函数中的属性名中删除空格吗?_Javascript - Fatal编程技术网

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