使用javascript均匀增加数组值?

时间:2017-01-19 09:26:00

标签: javascript arrays

我有一个包含示例的5个值的数组:

0.01
0.1
1
10
100

0.1
1
10
100
1000

1
10
100
1000
10000

5
50
500
5000
50000

我需要转换为包含相同比例间隔的100个值的数组,并且还包含序列中的原始5个值。像:

[0.01,...,0.1,...1,...10,...100]

我以为我可以使用numeric.linspace(0.01,100,100); http://www.numericjs.com/documentation.html

但这只会传递第一个和最后一个想要的价值。理想情况下,某些函数接受n个值的数组作为第一个参数,最终需要array.length

我不知道如何制定这个问题所以如果更多的话,请提出一个不同的标题......

2 个答案:

答案 0 :(得分:1)

您可以使用权重映射值。



$tz_object = new DateTimeZone('Africa/Kampala');
$datetime = new DateTime();
$datetime->setTimezone($tz_object);
$timeNow = $datetime->format('Y\-m\-d\ h:i:s');

$date = new DateTime();
$date->setTime(23,00);
$timeAllowed = $datetime->format('Y\-m\-d\ h:i:s');

if ($timeNow < $timeAllowed) {
    function woo_add_cart_fee() {

      global $woocommerce;

      $woocommerce->cart->add_fee( __('Custom', 'woocommerce'), number_format(5) );

    }
    add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

希望这就是你的意思:

function expand(arr, len){
  var perSection = Math.floor(len / (arr.length - 1));
  var out = [];
  var val;
  console.log('Per Section:', perSection);
  
  for (let i = 0; i < arr.length - 1; i++) {
  	val = arr[i];
    out.push(val);
    var interval = (arr[i+1] - arr[i]) / perSection;
    console.log('ival', interval);
  	for (let j = 0; j < perSection-1; j++) {
    	val += interval;
    	out.push(val)
    }
  }
  out.push(arr[arr.length-1]);
  
  return out;
}

console.log(expand([10, 40, 70, 100], 10));

请注意,生成的数组的长度并不总是与请求的长度完全匹配,因为在计算每个区间中有多少个数字时可能会出现舍入错误。
根据所需的行为,可以添加其他逻辑来处理这些边缘情况。