繁体   English   中英

"减少javascript中的对象数组"

[英]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>
  • 如果尚未初始化,则将组推送到数组<\/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM