首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从更大的对象字面量数据集中借助模板获取对象字面量数组?

如何从更大的对象字面量数据集中借助模板获取对象字面量数组?
EN

Stack Overflow用户
提问于 2019-04-17 19:31:13
回答 1查看 86关注 0票数 1

是否有单行,类型mapfilter ...es5+高阶函数还是...?希望解决方案与说明如何,为什么和参考。如果有人知道为什么一次不起作用。

timeTableKeys:输出模板数组,按键排序。runers:对象文字数组。parseStringify:使用简单的第二个参数(timeTableKeys)进行过滤的JSON.parse - JSON.stringify。manualNewObject:手动创建对象文字。multilineMapNewObj:使用timeTableKeys创建对象文字。

代码语言:javascript
复制
const runers = [{'Name':'Joe Bennet', 'Seasons':3, 'Time':'46m:12s:431ms', 'Place':12, 'Age':46, 'Gender':'M', 'Qual':'Pre', 'State':'TX', 'Adress':'Little Cow Middle Town, 2nd Main 5th Street 14C App 38','Mail':'joeB46TX@littelecowMT.org','Phone':'555-1845-LCMT','Group':'Semi-Senior', 'Doping-Test':'Passed', 'NR':7289},{'Name':'Allan Jenkin', 'Seasons':5, 'Time':'52m:29s:894ms', 'Place':153, 'Age':52, 'Gender':'M', 'Qual':'2nd Heat', 'State':'CA', 'Adress':'Redmond River, Downunder H12C ','Mail':'senior.jenkinA@qwredmond.net','Phone':'555-327-REDMOND','Group':'Semi-Senior', 'Doping-Test':'Passed', 'NR':925}],
timeTableKeys = ['State','Name','NR','Place','Time','Mail'],
parseStringify = () => JSON.parse( JSON.stringify( runers, timeTableKeys ) ),
manualNewObject  = () => runers.map(o => ({ 'State':o.State,'Name':o.Name,'NR':o.NR,'Place':o.Place,'Time':o.Time })),
multilineMapNewObj = () => runers.map(o => { let newO = {}; timeTableKeys.forEach( key => newO[key] = o[key]); return newO; }); 

console.log('--= Start =--' );
console.log('1: parseStringify', parseStringify() );
console.log('2: manualNewObject', manualNewObject() );  
console.log('3: multilineMapNewObj', multilineMapNewObj() ); 

请记住,我是第一次接触这些思考方式。以下是我尝试过的一些方法,它们不起作用,但可以转换或扁平化:

代码语言:javascript
复制
runers.map(o => $.extend(true,{}, timeTableKeys.map( key => (o[key] = o[key])  )));
runers.map(o => $.extend(true,{}, Object.assign({}, timeTableKeys.map( key => (o[key] = o[key]))  )));

runers.map(o => Object.assign({}, timeTableKeys.map( key => ({[key]:o[key]})  )));
runers.map(o => timeTableKeys.map( key => (o[key] = o[key])));  
runers.map(o => timeTableKeys.flatMap( key => ({[key]:o[key]}) ) );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-17 23:35:05

你所处的位置接近于那些不起作用的三分之一。

代码语言:javascript
复制
runers.map(o => Object.assign({}, timeTableKeys.map( key => ({[key]:o[key]})  )));

只需在模板过滤器数组"timeTableKeys“中添加...spread操作符即可。

代码语言:javascript
复制
runers.map(o => Object.assign({}, ...timeTableKeys.map( key => ({[key]:o[key]})) ));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55726578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档