lodash计算数组元素之间的差异

时间:2015-06-28 00:24:50

标签: javascript node.js underscore.js lodash

在使用lodash的javascript中,我需要一种方法来计算数组元素之间的差异,例如:

有一个阵列 [0,4,3,9,10]
我需要了解每个元素之间的差异 输出应为
[4,-1,6,1]

我如何使用lodash做到这一点?

在红宝石中它看起来像这样:
ary.each_cons(2).map { |a,b| b-a }

4 个答案:

答案 0 :(得分:3)

一种可能的解决方案是使用 _.map()

var arr = [0,4,3,9,10];

var result = _.map(arr, function(e, i) {
  return arr[i+1] - e;
});

result.pop();

document.write(JSON.stringify(result));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.9.3/lodash.min.js"></script>

答案 1 :(得分:1)

你可以做一些像这样的事情:

var arr = [0, 4, 3, 9, 10];
var res = [];
_.reduce(_.rest(arr), function (prev, next) {
  res.push(next - prev);
  return next;
}, arr[0]);

答案 2 :(得分:0)

如何使用_.reduce

&#13;
&#13;
(function () {
    var nums = [0,4,3,9,10];
    var diffs = _.reduce(nums, function(result, value, index, collection) {
        if (index === 0) return result;
        result[index] = value - collection[index - 1];
        return result;
    }, []).slice(1);
    
    $('.output').text(JSON.stringify(diffs));
}());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.9.3/lodash.min.js"></script>
<div class=output></div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

也许是更惯用的lodash解决方案:

_.zipWith(arr.slice(1), arr.slice(0, -1), _.subtract)