v1
- by turiyag 11/1/202000
Setup HTML - click to add setup HTML
disable setup JavaScript
Setup JavaScript


function aggregate_functional (numbers) {
  if (numbers.length == 0) {
    throw new Error("aggregate() requires at least one number")
  }
  const sum = numbers.reduce((s, n) => s += n)
  let min = Math.min(...numbers)
  let max = Math.max(...numbers)
  const average = sum / numbers.length
  return {
    sum,
    average,
    min,
    max,
  }
}

function aggregate_imperative (numbers) {
  if (numbers.length == 0) {
    throw new Error("aggregate() requires at least one number")
  }
  let sum = 0
  let min = numbers[0]
  let max = numbers[0]
  for (const val of numbers) {
    if (val < min) min = val
    if (val > max) max = val
    sum += val
  }
  const average = sum / numbers.length
  return {
    sum,
    average,
    min,
    max,
  }
}

function aggregate_imperative_idx (numbers) {
  if (numbers.length == 0) {
    throw new Error("aggregate() requires at least one number")
  }
  let sum = 0
  let min = numbers[0]
  let max = numbers[0]
  for (let i = 0; i < numbers.length; i++) {
  	const val = numbers[i]
    if (val < min) min = val
    if (val > max) max = val
    sum += val
  }
  const average = sum / numbers.length
  return {
    sum,
    average,
    min,
    max,
  }
}
delete caserun single casemove downdrag and drop case


ready




for (let x = 0; x < 10000; x++) {
      aggregate_functional ([1,2,3,4,5,6,7,8,9])	
}
delete caserun single casemove upmove downdrag and drop case


ready




for (let x = 0; x < 10000; x++) {
      aggregate_imperative ([1,2,3,4,5,6,7,8,9])	
}
delete caserun single casemove updrag and drop case


ready




for (let x = 0; x < 10000; x++) {
      aggregate_imperative_idx ([1,2,3,4,5,6,7,8,9])	
}
Test Case - click to add another test case
Teardown JS - click to add teardown JavaScript
Output (DOM) - click to monitor output (DOM) while test is running
RUN