/ / Jaki jest najszybszy sposób na podzielenie asocjacyjnej tablicy JavaScript na dwie różne tablice? - javascript, tablice, wydajność

Jaki jest najszybszy sposób na podzielenie asocjacyjnej tablicy JavaScript na dwie różne tablice? - javascript, tablice, wydajność

Mam oryginalną tablicę danych, która składa się z następującej struktury (Uwaga: linki to fikcyjne linki tylko na potrzeby tego przykładu) ...

  var densitySet = [
{ Name: "Node 1", Total: 1000, Link: "http://www.if4it.com" },
{ Name: "Node 2", Total: 1500, Link: "http://www.if4it.com" },
{ Name: "Node 3", Total: 700, Link: "http://www.if4it.com" },
{ Name: "Node 4", Total: 300, Link: "http://www.if4it.com" },
{ Name: "Node 5", Total: 1000, Link: "http://www.if4it.com" },
{ Name: "Node 6", Total: 900, Link: "http://www.if4it.com" },
{ Name: "Node 7", Total: 1090, Link: "http://www.if4it.com" },
{ Name: "Node 8", Total: 35, Link: "http://www.if4it.com" },
{ Name: "Node 9", Total: 1000, Link: "http://www.if4it.com" },
{ Name: "Node 10", Total: 99, Link: "http://www.if4it.com" }
];

Chciałbym podzielić powyższą tablicę na dwie częścioddzielne tablice, w których pierwsza tablica (zwana „totalsArray”) składałaby się tylko ze wszystkich nazw i sum (tj. pierwsza i druga kolumna oryginalnej tablicy), a druga tablica (zwana „linksArray”) składałaby się ze wszystkich nazw i łączy (tj. pierwsza i trzecia kolumna).

Innymi słowy, po zakończeniu dwie nowe tablice będą zawierać następujące ...

  var totalsArray = [
{ Name: "Node 1", Total: 1000 },
{ Name: "Node 2", Total: 1500 },
{ Name: "Node 3", Total: 700 },
{ Name: "Node 4", Total: 300 },
{ Name: "Node 5", Total: 1000 },
{ Name: "Node 6", Total: 900 },
{ Name: "Node 7", Total: 1090 },
{ Name: "Node 8", Total: 35 },
{ Name: "Node 9", Total: 1000 },
{ Name: "Node 10", Total: 99 }
];

var linksArray = [
{ Name: "Node 1", Link: "http://www.if4it.com" },
{ Name: "Node 2", Link: "http://www.if4it.com" },
{ Name: "Node 3", Link: "http://www.if4it.com" },
{ Name: "Node 4", Link: "http://www.if4it.com" },
{ Name: "Node 5", Link: "http://www.if4it.com" },
{ Name: "Node 6", Link: "http://www.if4it.com" },
{ Name: "Node 7", Link: "http://www.if4it.com" },
{ Name: "Node 8", Link: "http://www.if4it.com" },
{ Name: "Node 9", Link: "http://www.if4it.com" },
{ Name: "Node 10", Link: "http://www.if4it.com" }
];

W mojej prawdziwej sytuacji pierwotna tablica („gęstośćSet”) może być BARDZO długa, więc moje pytanie brzmi: Jaki jest najszybszy i najskuteczniejszy sposób zadeklarowania dwóch nowych tablic i przejścia przez pierwotną tablicę w celu ich zapełnienia?

Mój oryginalny kod wygląda następująco:

  var totalsArray = [];
var linksArray = [];
for(var i = 0; i < densitySet.length; i++){
var tempArray1 = {Name: densitySet[i].Name, Total: densitySet[i].Total};
var tempArray2 = {Name: densitySet[i].Name, Link: densitySet[i].Link};
totalsArray.push( tempArray1 );
linksArray.push( tempArray2 );
};

Nie wiem jednak, że jest to NAJSZYBSZY i NAJWYŻSZY sposób na utworzenie dwóch nowych tablic ...

Z góry dziękuję za wszelką pomoc, którą możesz zaoferować.

Odpowiedzi:

3 dla odpowiedzi № 1

Unikaj robienia tego, jeśli możesz, to jest powolne. Regularne for pętla jest najszybsza:

var totals = [];
var links = [];

for (var i = 0; i < densitySet.length; i++) {
var obj = densitySet[i];

totals.push({
Name: obj.Name,
Total: obj.Total
});

links.push({
Name: obj.Name,
Link: obj.Link
});
}

Sprawdź to: http://jsperf.com/array-splitting-2


1 dla odpowiedzi nr 2

Utwórz dwie nowe tablice, a następnie wepchnij w nie swoje obiekty

var totalsArray = [];
var linksArray = [];

for(var i = 0; i < densitySet.length; i++){
var temp = {Name: densitySet[i].Name, Total: densitySet[i].Total};
var anotherTemp = {Name: densitySet[i].Name, Link: densitySet[i].Link};
totalsArray.push(temp);
linksArray.push(anotherTemp);
}

0 dla odpowiedzi № 3

Coś takiego?

var totalsArray = new Array();
var linksArray = new Array();
desitySet.forEach(function(elem) {
totalsArray.push(desired object here);
linksArray.push(desired object here);
}

elem będzie każdym pojedynczym obiektem JSON w tablicy i możesz z niego tworzyć i wypychać nowe.