【问题标题】:Sum of array values at dictionary positions only - Javascript仅在字典位置的数组值总和 - Javascript
【发布时间】:2020-04-01 11:15:49
【问题描述】:

我有 x 数量的数据集要发布到折线图中,并且我想要生成一条额外的线,它是特定位置的所有字典条目的总和(在本例中,它是输入日期)。我只有 1 个字典,因为数据是从数据库中提取的 - 字典名为“all_users_experiences”。

我正在尝试将每个字典位置的值加在一起并推入另一个数组,这样我就可以将每个位置除以用户数以获得每个位置的总和,但对于我的一生,我只能查找附加位置的常规数组的示例,而不是字典值。 JavaScript 新手,所以任何帮助都会很棒!

数组: (2) [数组(30),数组(30)]

数组内容(每个数字都有一个键是我的问题!):

(30) [1, 2, 5, 8, 9, 9, 4, 3, 3, 5, 6, 2, 2, 1, 5, 6, 7, 7, 7, 7, 6, 6 , 4, 3, 4, 3, 2, 5, 7, 7]

(30) [5, 5, 6, 6, 7, 5, 5, 4, 3, 2, 1, 1, 6, 7, 8, 7, 7, 7, 6, 7, 8, 9 , 7, 5, 6, 6, 7, 8, 7, 6]

我已经成功地使用常规数字列表完成了这项工作,但不是字典值!

非常感谢您。

编辑: 原始未更改数据通过 python 解析为 JS 出于敏感性原因,JSON 只能显示从该文件中提取的数据。原始问题内容中的数字是下面正在整理的。

之前的代码已尝试(多次尝试中的 1 次...):

  console.log(all_users_experiences) //Producing 2 arrays
  console.log(all_users_experiences[0])
  console.log(all_users_experiences[1])

  var total_users = Object.keys(linegraph_data).length;

  user_exp_aggregate = []

  for (var i = 0; i < total_users.length; i++){
    user_exp_aggregate.push(all_users_experiences[i][0] + all_users_experiences[i][1]);
    console.log(user_exp_aggregate)
  }
  console.log("Total list: " + user_exp_aggregate)

EDIT2

根据 Bergi 的建议进行了修改,但仍然没有将数据添加到新数组中:

  user_exp_aggregate = []
  console.log("Initial list: "+ user_exp_aggregate)
  for (var i = 0; i < total_users.length; i++){
    user_exp_aggregate.push(all_users_experiences[0][i] + all_users_experiences[1][i]);
    console.log("updated list: " + user_exp_aggregate)
  }
  console.log("Total list: " + user_exp_aggregate)

Amended snapshot of result

如何在图形中使用来自数组的当前数据的示例(尝试创建一个显示所有用户之间平均值的第三条线图数据集!):

enter image description here

【问题讨论】:

  • 请以文字表示法添加您的代码和数组。
  • javascript 中没有这样的字典,所以你什么也得不到。您能否发布输入和输出示例以及您到目前为止所做的工作?这将使其他贡献者了解您的问题并轻松帮助您
  • 这看起来不像“字典”,它只是一个数组。
  • 您正在寻找 user_exp_aggregate.push(all_users_experiences[0][i] + all_users_experiences[1][i]) - 注意索引
  • 嗨,有没有人有任何可以提供帮助的想法?这几天一直在绞尽脑汁!

标签: javascript dictionary for-loop sum


【解决方案1】:

这可能是您正在寻找的:

all_users_experiences = [
  [1, 2, 5, 8, 9, 9, 4, 3, 3, 5, 6, 2, 2, 1, 5, 6, 7, 7, 7, 7, 6, 6, 4, 3, 4, 3, 2, 5, 7, 7],
  [5, 5, 6, 6, 7, 5, 5, 4, 3, 2, 1, 1, 6, 7, 8, 7, 7, 7, 6, 7, 8, 9, 7, 5, 6, 6, 7, 8, 7, 6]
]

user_exp_aggregate = []

//Loop to the full length for each
for (var i = 0; i < all_users_experiences[0].length; i++) {
  user_exp_aggregate.push(all_users_experiences[0][i] + all_users_experiences[1][i]);
}

console.log("Total list: " + user_exp_aggregate)

//If you want to divide each value by total user count
user_exp_average = []

//var total_users = Object.keys(linegraph_data).length;
var total_users = 2 //Assuming total users are 2
for (var i = 0; i < user_exp_aggregate.length; i++) {
  user_exp_average.push(user_exp_aggregate[i] / total_users);
}

console.log("Average: " + user_exp_average)

在编辑 2 部分代码中发生的问题是,循环只运行到用户总长度。但是根据您的规范,您需要遍历所有体验以获取聚合数组,然后将每个值除以用户总数以获得平均值。

希望对您有所帮助。如有任何疑问,请回复。

【讨论】:

    猜你喜欢
    • 2012-09-29
    • 1970-01-01
    • 2020-09-10
    • 2018-08-05
    • 2018-11-19
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    相关资源
    最近更新 更多