[英]Reduce array of objects in javascript
我在 javascript 中有一个要减少的对象数组。 请参阅下面的代码。 6 位或更多数字的消息已验证,未验证的消息较少。 我将它们分组。
但是我希望输出也是一个对象数组,如下所示:
我该怎么做?"
使用数组作为累加器的初始值,在
.reduce<\/code>内部,使用
findIndex<\/code>检查当前组,如果找到,更新
verified<\/code>和
unverified<\/code>的值,否则插入新的:
您可以使用
Object.entries()<\/code>或
Object.keys()<\/code>简单地扩展您的解决方案\/输出以获得实际所需的输出。
我将使用
Object.entries()<\/code>
我忍不住稍微重构了你的代码。 那就是说。 我做了什么:
使用数组 ( []<\/code> ) 启动累加器
<\/li>
增加verified<\/code>或未unverified<\/code>取决于您的测试是否失败
<\/li><\/ul>
const myArray = [ { group: "groupA", message: "Text without a number", sl: "1A" }, { group: "groupA", message: "Text with a number WO5467829", sl: "1A" }, { group: "groupB", message: "Text without a number", sl: "1A" }, { group: "groupA", message: "Text with a number WO5467829", sl: "1A" }, { group: "groupB", message: "Text with a number WO5467829", sl: "1A" }, { group: "groupC", message: "Text without a number", sl: "1B" }, { group: "groupD", message: "Text with a number Tick0127866", sl: "1B" }, { group: "groupC", message: "Text without a number", sl: "1A" } ]; output = myArray.reduce((acc, line) => { if( acc.findIndex(e => e.group === line.group) === -1 ) { acc.push({ group: line.group, verified: 0, unverified: 0 }); } let group = acc.find(e => e.group === line.group); if( line.message.match(\/\\d{6,}\/) ) group.verified++; else group.unverified++; return acc; }, []); console.log(output);<\/code><\/pre>
"
您可以在
Object.entries<\/code>上使用
map()<\/code> 。
我还在
reduce<\/code>方法中重构了您的代码
将
group<\/code>道具放入您的帐户中。
然后使用
Object.values<\/code>函数返回对象的值。
像这样将 reduce 与正则表达式测试结合使用 -
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.