我有一个json数组。
{1:2500,2:3000,3:3000,4:2500,5:5000,6:3000}
这里5000是最大值,它是100%。
我想迭代这个数组并形成另一个javascript数组 {50%,60%,60%,50%,100%,60%}
我怎样才能在javascript中有效地做到这一点?
答案 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"}
,这是一个name
和age
属性的对象。数组在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)