迭代jSON数组并将值转换为百分比

时间:2016-02-18 06:07:33

标签: arrays json

我有一个json数组。

{1:2500,2:3000,3:3000,4:2500,5:5000,6:3000}

这里5000是最大值,它是100%。

我想迭代这个数组并形成另一个javascript数组 {50%,60%,60%,50%,100%,60%}

我怎样才能在javascript中有效地做到这一点?

2 个答案:

答案 0 :(得分:1)

只需从数组中选择max元素,然后使用内置的map函数生成另一个百分比数组。

var yourArray = [2500, 3000, 3000, 2500, 5000, 3000];
var max = Math.max.apply(Math, yourArray); // picks out 5000
var percents = yourArray.map(n => n/max * 100.0);

答案 1 :(得分:1)

嗯,这些实际上不是数组。在JS中,数组有方括号,对象(就像你拥有的那样)有花括号。当您看到类似这样的内容时:{name: "dave", age: "30"},这是一个nameage属性的对象。数组在JS中不具备属性。所以数组可能如下所示:["dave", 32]。此外,您不能将数字作为属性。

var x = {1: 2500} // this wont work

你想要的最终输出也不会像描述一个对象(当你使用curlies时)那样工作,而你想要的是一个数组。所以你可能想要的更像是将数组[2500, 3000, 3000, 2500, 5000, 3000]转换为类似["50%", "60%", "60%", "50%", "100%", "60%"]的数组

请注意,在第一个数组中,值是真实数字(不是引号),而最终结果数组的值是字符串,因为我们有百分号

您可以使用地图功能执行此操作。这段代码"映射"一个数组的每个项目到一个函数。无论函数返回什么,都将替换原始数组中的原始项

var originalArray = [3000, 5000];
var newArray = originalArray.map(function(item) {
  return ((item / 5000) * 100) + '%'
})

console.log(newArray)