JavaScript-在带有计数的对象数组中查找唯一值,并创建一个新的对象数组

WhyAto8

我有一个对象数组,如下所示:

var arr =[
 {
  price:20,
  rule:a
 },
 {
  price:10,
  rule:b
 },
 {
  price:5,
  rule:a
 },
 {
  price:50,
  rule:b
 },
 {
  price:70,
  rule:b
 }
]

我想从中提取出一个对象数组,如下所示:

var filteredArr = [
 {
  rule:a,
  countOfRule:2,
  minPriceForThisRule:5
 },
 {
  rule:b,
  countOfRule:3,
  minPriceForThisRule:10
 }
]

这表示:

1)我想创建没有新数组。作为唯一编号的对象。第一个数组“ arr”中的规则集

2)需要计算唯一规则的重复次数,并将其添加为新数组对象的属性-给出为“ countOfRule”

3)在唯一规则类别中找到最低价格-给出为“ minPriceForThisRule”

我已经在SO上阅读了类似的答案,并且只能获得前2个条件,而且格式也不符合我的需要。

我尝试过的,指的是SO上的链接:

var ff = {},e;
for (var i = 0,l=arr.length; i < l; i++) {
   e = arr[i];
   ff[e.rule] = (ff[e.rule] || 0) + 1;
}

但这仅给出了一个对象

{
 a : 2,
 b: 3
}
内纳德·弗拉卡(Nenad Vracar)

您可以使用forEachthisArg可选参数来执行此操作

var arr = [{"price":20,"rule":"a"},{"price":10,"rule":"b"},{"price":5,"rule":"a"},{"price":50,"rule":"b"},{"price":70,"rule":"b"}], 
    r = [];

arr.forEach(function(e) {
  if(!this[e.rule]) {
    this[e.rule] = {rule: e.rule, countOfRule: 0, minPriceForThisRule: e.price}
    r.push(this[e.rule]);
  }
  this[e.rule].countOfRule++;
  if(this[e.rule].minPriceForThisRule > e.price) this[e.rule].minPriceForThisRule = e.price;
}, {});

console.log(r)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JavaScript在输入上循环创建一个对象数组

从两个数组创建一个JavaScript对象

根据Javascript中另一个对象的属性数量创建新数组

仅从对象JavaScript数组中过滤唯一值

如何在Javascript中的对象数组的最后一个对象之后追加几个新对象?

如何在对象的JavaScript数组中查找重复值,并仅输出唯一值?

Javascript-仅返回对象数组中的唯一值

如何从JavaScript中的数组对象中计数唯一值

如何创建一个JavaScript函数来查找彼此嵌套的对象和数组

JavaScript:创建将嵌套数组中的数据转换为具有多个对象的一个数组的函数

从JavaScript中的另一个对象数组替换一个对象数组的值

在javascript中组合对象数组以形成一个新对象

从Javascript中的对象数组创建一个对象

如何在另一个对象数组中获取按值过滤的新数组?javascript

创建一个函数以按Javascript中的值对对象数组进行排序

JavaScript:创建一个函数来拒绝被认为是真实的数组元素,从而麻烦数组中的对象的值

Javascript创建一个对象,以数组值作为键

JavaScript - 如何将多个嵌套数组中的所有对象放入一个新的唯一对象数组

如何遍历 json 对象并使用 Javascript 形成一个带有连接值的新对象?

Javascript - 为每个循环创建一个对象并在数组中递增计数

如何从对象数组 Javascript 中获取唯一值

在 JavaScript 中过滤一个值并创建新数组

Javascript在对象数组中查找所有出现的名称并创建新的唯一数组

可以从 Javascript 中的对象属性创建一个新数组

在javascript中的对象数组中从具有空值的数组创建一个新属性

Javascript:为数组中的每个对象添加一个唯一的 id

如何在javascript中的对象数组中创建另一个对象数组中的对象数组

如何在反应javascript中使用现有对象数组的值构造一个新数组

Javascript - 过滤包含具有来自另一个数组的值的数组的对象