当前位置: 首页 > 面试题库 >

计算对象数组中的特定键值

冯玮
2023-03-14
问题内容

我有以下JSON数组,我想创建对象表单状态键计数

[
  {
    "id": "65:0",    
    "status": "ORANGE"
  },
  {
    "id": "65:0",
    "status": "GREEN"
  },
  {
    "id": "65:0",
    "status": "ORANGE"
  },
  {
    "id": "65:0",
    "status": "YELLOW"
  },
  {
    "id": "65:0",
    "status": "RED"
  },
  {
    "id": "65:0",
    "status": "GREEN"
  },
  {
    "id": "65:0",
    "status": "GREEN"
  },
   {
    "id": "65:0",
    "status": "ORANGE"
  },
  {
    "id": "65:0",
    "status": "YELLOW"
  },
  {
    "id": "65:0",
    "status": "GREEN"
  }
]

要计算状态键值并创建以下对象

{
 'ORANGE' : 3,
 'GREEN' : 4,
 'YELLOW' : 2,
 'RED' : 1,
}

问题答案:

使用 Array#reduce 方法

var res = data.reduce(function(obj, v) {
  // increment or set the property
  // `(obj[v.status] || 0)` returns the property value if defined
  // or 0 ( since `undefined` is a falsy value
  obj[v.status] = (obj[v.status] || 0) + 1;
  // return the updated object
  return obj;
  // set the initial value as an object
}, {})



var data = [{

  "id": "65:0",

  "status": "ORANGE"

}, {

  "id": "65:0",

  "status": "GREEN"

}, {

  "id": "65:0",

  "status": "ORANGE"

}, {

  "id": "65:0",

  "status": "YELLOW"

}, {

  "id": "65:0",

  "status": "RED"

}, {

  "id": "65:0",

  "status": "GREEN"

}, {

  "id": "65:0",

  "status": "GREEN"

}, {

  "id": "65:0",

  "status": "ORANGE"

}, {

  "id": "65:0",

  "status": "YELLOW"

}, {

  "id": "65:0",

  "status": "GREEN"

}];



var res = data.reduce(function(obj, v) {

  obj[v.status] = (obj[v.status] || 0) + 1;

  return obj;

}, {})



console.log(res);

虽然可以使用 Array#forEach 具有相同代码的方法。

var res = {};
data.forEach(function(v) {
  res[v.status] = (res[v.status] || 0) + 1;
})



var data = [{

  "id": "65:0",

  "status": "ORANGE"

}, {

  "id": "65:0",

  "status": "GREEN"

}, {

  "id": "65:0",

  "status": "ORANGE"

}, {

  "id": "65:0",

  "status": "YELLOW"

}, {

  "id": "65:0",

  "status": "RED"

}, {

  "id": "65:0",

  "status": "GREEN"

}, {

  "id": "65:0",

  "status": "GREEN"

}, {

  "id": "65:0",

  "status": "ORANGE"

}, {

  "id": "65:0",

  "status": "YELLOW"

}, {

  "id": "65:0",

  "status": "GREEN"

}];



var res = {};

data.forEach(function(v) {

  res[v.status] = (res[v.status] || 0) + 1;

})



console.log(res);


 类似资料:
  • 问题内容: 如何计算值等于常数的数组中元素的数量?例, 我怎么才能直接知道里面有多少“本”? 问题答案:

  • 问题内容: 我试图根据条件计算某个值在多维数组中出现的次数。这是一个示例数组; 如果要显示所有绿色水果,可以执行以下操作(让我知道这是否是最佳方法); 这将输出; 太好了,我可以在那里看到它们是2个值,但是实际上我如何才能让PHP计算绿色的水果数量并将其放在变量中,以便我在脚本中进一步使用以解决问题?例如,我想做类似的事情; 我看过count(); 但是我看不到任何添加“ WHERE / cond

  • 我有一个类似这样的json响应: 我想检查,如果某个数组数组有一个对象,其属性名为“某个属性”,值为“某个值”,但如果它有另一个具有相同属性但不相同值的对象,则不要失败测试。 有可能吗?在此之前,我一直使用静态索引,因为我在该数组中只有一个元素。

  • 我有这个: 我想要这个: 怎么做?谢了!

  • 我在开快车。js应用程序,有几个API将数据提供给下拉框。返回的数据格式为: 其中key是我的选项key,value是显示文本。这个数组的结构是固定的,我知道一个事实,我总是将key和value作为数组中每个对象的字段。 当我尝试验证提交的表单(额外的服务器端验证)时,我想交叉引用为字段提供的值与数组中“key”的所有值(blah、foo、bar、baz)。鉴于这将是一个经常使用的路由,我想避免每

  • 比方说,我有一个数组列表: 从这个列表中,我想找到如下发生次数。 我的目标是,根据id发生的次数,我想创建一个循环来进一步迭代。 请查找我创建Arraylist的java代码 更新 尝试实施以下案例: