【问题标题】:How add values in different objects in an array?如何在数组中的不同对象中添加值?
【发布时间】:2020-06-04 22:09:47
【问题描述】:

我怎样才能只访问第一个@NOTIFICATION_OPENED 键?

如何将@NOTIFICATION_OPENED 的两个值相加?

这是我的 AJAX 请求:

$.getJSON("myapiurl", function(notificationData) {
  $.each(notificationData.data, function(index, value) {
    if (value["@NOTIFICATION_OPENED"]) {
      var notificationOpened = value["@NOTIFICATION_OPENED"]
    } else 
      notificationOpened = 0;

    var val = {
      "notificationOpened": notificationOpened
    }
    _data.push(val)
  });
}

这是我使用上述请求从 API 检索到的数据:

{
  "data": [{
    "date": 1577836800000,
    "@NOTIFICATION_SENT": 62629,
    "@NOTIFICATION_OPENED": 404
  }, {
    "date": 1577923200000,
    "@NOTIFICATION_OPENED": 734
  }]

【问题讨论】:

标签: javascript jquery json api


【解决方案1】:

我怎样才能只访问第一个@NOTIFICATION_OPENED 键?

只需取data的第一个元素,然后取@NOTIFICATION_OPENED的值。例如:

var notification = {
    "data": [{
        "date": 1577836800000,
        "@NOTIFICATION_SENT": 62629,
        "@NOTIFICATION_OPENED": 404
    }, {
        "date": 1577923200000,
        "@NOTIFICATION_OPENED": 734
    }]
}

var firstNotificationData = notification.data[0]
var firstNotificationOpenedData = firstNotificationData["@NOTIFICATION_OPENED"]
console.log(firstNotificationOpenedData)

如何将@NOTIFICATION_OPENED 的两个值相加?

您可以使用reduce 来汇总打开的通知总数。例如:

var notification = {
    "data": [{
        "date": 1577836800000,
        "@NOTIFICATION_SENT": 62629,
        "@NOTIFICATION_OPENED": 404
    }, {
        "date": 1577923200000,
        "@NOTIFICATION_OPENED": 734
    }]
}

var totalNotificationOpened = notification.data.reduce(function (acc, d) {
    return acc + d["@NOTIFICATION_OPENED"]
}, 0)

console.log(totalNotificationOpened)

【讨论】:

    【解决方案2】:

    我添加了一个方括号以使其成为有效的 JSON:

    const data = 
    [
      {
        "date": 1577836800000,
        "@NOTIFICATION_SENT": 62629,
        "@NOTIFICATION_OPENED": 404
      },
      {
       "date": 1577923200000,
       "@NOTIFICATION_OPENED": 734
      }
     ]
    
    let nSent   = data[0]["@NOTIFICATION_SENT"]
    let nOpened = data[0]["@NOTIFICATION_OPENED"]
    let mySum   = nSent+nOpened
    
    alert(mySum)
    

    这将产生一个总和为 63033 的警报

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 1970-01-01
      • 2021-09-29
      • 2016-05-25
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多