2016-02-18 2 views
0

У меня есть json массив.Итерировать массив jSON и преобразовать значения в проценты

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

Здесь 5000 представляет собой максимальное значение, и это 100%.

Я хочу перебирать этот массив и сформировать другой яваскрипт массива {50%, 60%, 60%, 50%, 100%, 60%}

Как я могу сделать это эффективно в JavaScript?

ответ

1

Просто выберите max из массива и используйте встроенную функцию карты для создания другого массива с процентами.

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

Ну, на самом деле это не массивы. В 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%"]

Обратите внимание, что в первом массиве значения были истинными числами (не в кавычках), а в массиве конечных результатов значения be string, так как у нас есть знак процента

Для этого вы можете использовать функцию карты. Этот код «отображает» каждый элемент массива в функцию. Независимо от возвращаемой функции заменит исходный элемент в исходном массиве

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

console.log(newArray) 
Смежные вопросы