Próbuję wykonać matematykę na niektórych obiektach, mam problem z zrozumieniem, jak osiągnąć to, czego potrzebuję. Powiedzmy, że mam te dwa przedmioty:

var test = [1,2,3,4,5,6,7,8];
var boom = [2,3,1,4,5,2,5,6];
result = [-1,-1,2,0,0,4,2,2];

Próbuję osiągnąć, aby odjąć indywidualne liczby od siebie między przecinkami, aby uzyskać result. Czy istnieje ta metoda? Próbowałem użyć split(','), aby usunąć przecinki, ale powiedział split() nie jest dostępny na obiektach.

-2
Yamaha32088 2 grudzień 2013, 16:25

3 odpowiedzi

Najlepsza odpowiedź

Najprostszym sposobem jest pętla na jednej tablicy i odejmij wartości w innej tablicy:

var test = [1,2,3,4,5,6,7,8];
var boom = [2,3,1,4,5,2,5,6];

var result = test.map(function(item, index){ return item - boom[index]; });

console.log(result); // [-1, -1, 2, 0, 0, 4, 2, 2] 

Jeśli nie lubisz programowania funkcjonalnego, możesz to zrobić z regularnym dla:

var result = [];
for (var i=0; i<test.length; i++) {
  result.push(test[i]-boom[i]);
}
3
Tibos 2 grudzień 2013, 12:29

Alternatywa dla używania map jest używana proste {x1}}:

function subtract(arr1, arr2){
  var out = [];
  if (arr1.length !== arr2.length) return false;
  for (var i = 0, l = arr1.length; i < l; i++) {
    out[i] = arr1[i] - arr2[i];
  }
  return out;
}

var subtracted = subtract(test, boom); // [-1, -1, 2, 0, 0, 4, 2, 2]

Fiddle.

2
Andy 2 grudzień 2013, 12:41

Możesz użyć Array.prototype.map :

var result = test.map(function(v,k){return v - boom[k];});

Oto przykład na jsfiddle

2
Moritz Roessler 2 grudzień 2013, 16:09