2015-05-22 20 views

Trả lời

2

Không có tích hợp chức năng như vậy, nhưng viết một rất đơn giản:

function diff(ary) { 
    var newA = []; 
    for (var i = 1; i < ary.length; i++) newA.push(ary[i] - ary[i - 1]) 
    return newA; 
} 
var A = [1, 2, 3, 3, 0]; 
console.log(diff(A)) // [1, 1, 0, -3] 

đây là fiddle: https://jsfiddle.net/ewbmrjyr/1/

+1

Cảm ơn j08691, nó hoạt động. Tôi đã nghĩ rằng có thể có một phương pháp trong xây dựng, sau đó tôi không nên phát minh lại bánh xe. – mystackoverflow

1
var a = [1,2,3,3,0] ; 
function diff (arr){ 
    diffArr=[]; 
    for(var i=0; i<arr.length-1; i++){ 
     diffArr.push(arr[i+1]-arr[i]); 

    } 
    return diffArr; 
} 
alert(diff(a)); //[1,1,0,-3] 
+1

Điều này về cơ bản khác với câu trả lời của tôi như thế nào? Có vẻ như cùng một logic. – j08691

6

Nếu bạn thích lập trình chức năng, đây là một giải pháp sử dụng map:

function diff(A) { 
    return A.slice(1).map(function(n, i) { return n - A[i]; }); 
} 

Giải thích một chút: slice(1) nhận tất cả trừ yếu tố đầu tiên. map trả về một giá trị mới cho mỗi giá trị đó và giá trị trả về là phần chênh lệch giữa phần tử và phần tử tương ứng trong A, (mảng un- slice d), vì vậy A[i] là phần tử trước [i] trong lát cắt.

Đây là jsfiddle: https://jsfiddle.net/ewbmrjyr/2/

+0

Cảm ơn rất nhiều Roy, đó cũng là một giải pháp tốt. – mystackoverflow

Các vấn đề liên quan