减少JavaScript中的对象数组

伯爵公爵

我有一个要减少的JavaScript对象数组。请参见下面的代码。验证了6位或更多位数的消息,未验证的消息更少。我将它们分组。

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) => {
  let yes = 0;
  let no = 0;

  line.message.match(/\d{6,}/) ? yes++ : no++;

  acc[line.group] = acc[line.group] || {};
  acc[line.group].verified = (acc[line.group].verified || 0) + yes;
  acc[line.group].unverified = (acc[line.group].unverified || 0) + no;
  return acc;
}, {});

console.log('output', output);

但是我希望输出也可以是这样的对象数组:

[
  { group: 'groupA', verified: 2, unverified: 1 },
  { group: 'groupB', verified: 1, unverified: 1 },
  { group: 'groupC', verified: 0, unverified: 2 },
  { group: 'groupD', verified: 1, unverified: 0 }
]

我该怎么做?

这样

使用数组作为累加器的初始值,并在内部.reduce使用findIndex,检查当前组(如果找到),更新verifiedunverified值,否则,插入一个新的:

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) => {
  let yes = 0;
  let no = 0;

  line.message.match(/\d{6,}/) ? yes++ : no++;

  // check if you have the group in the accumulator
  const ndx = acc.findIndex(e => e.group === line.group);

  // if you have it, manipulate verified and unverified
  if (ndx > -1) {
    acc[ndx].verified = (acc[ndx].verified || 0) + yes;
    acc[ndx].unverified = (acc[ndx].unverified || 0) + no;
  } else {
    // insert a new entry instead
    acc.push({
      group: line.group,
      verified: yes,
      unverified: no
    });
  }

  return acc;
}, []); // use an array as the initial value of the accumulator

console.log(output);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Javascript 中的对象数组中映射和减少数组

来自分类Dev

减少javascript中的数组

来自分类Dev

如何减少Javascript中多个变量上的对象数组?

来自分类Dev

无法减少数组中相关的 JavaScript 对象

来自分类Dev

Lodash 从对象数组中减少对象数组

来自分类Dev

减少以日期为键的对象的JavaScript数组?

来自分类Dev

在Swift中减少托管对象的数组

来自分类Dev

如何通过键减少对象数组并在javascript中求和它的值

来自分类Dev

JavaScript将对象数组减少为对象字典

来自分类Dev

在javascript中过滤和减少对象

来自分类Dev

数组到对象减少

来自分类Dev

数组中的Javascript对象

来自分类Dev

Javascript 中的对象数组

来自分类Dev

减少对象数组内的数组

来自分类Dev

减少数组的数组并从Javascript数据中删除null

来自分类Dev

按规则减少数组中对象的实例

来自分类Dev

将JS数组中的键值对减少为对象

来自分类Dev

减少对象数组以呈现表中的其他行

来自分类Dev

将JS数组中的键值对减少为对象

来自分类Dev

减少JavaScript对象

来自分类Dev

javascript:对象数组中的对象数组

来自分类Dev

稀疏数组并减少JavaScript

来自分类Dev

将对象数组减少为对象数组

来自分类Dev

在Javascript中访问对象数组(或数组数组)

来自分类Dev

Java流减少对象的数组

来自分类Dev

使用Ramda减少对象数组

来自分类Dev

减少OpenMP中的数组

来自分类Dev

从javascript中的对象数组中删除对象

来自分类Dev

如何使用JavaScript类增加和减少对象中的值?