Autor Zpráva
tester
Profil *
Pro účely statistik výskytů znaků v řetězci mám pole, které potřebuju vytvořit znova, když narazím na oddělovač.

// začátek smyčky
oObj.stats.push({ '"': 0 , "'":0, '(': 0, '[':0, '"(': 0 , "'(":0,'"[': 0 , "'[":0 });
// konec smyčky
Není to ale zbytečně pomalé? Neměl bych raději zkopírovat původní objekt, který vytvořím jen jednou?
var myObj = { '"': 0 , "'":0, '(': 0, '[':0, '"(': 0 , "'(":0,'"[': 0 , "'[":0 };
// začátek smyčky
oObj.stats.push( Object.assign({}, myObj) );
// konec smyčky
Radek9
Profil
tester:
To kopírování bude podle mě pomalejší, protože se děje až v runtimu. Kdežto definice objektu se dá zoptimalizovat. Musíš ale vytvářet (příp. kopírovat) celý ten objekt? Nestačilo by, kdybys ho použil jako prototyp?

var myObj = { '"': 0 , "'":0, '(': 0, '[':0, '"(': 0 , "'(":0,'"[': 0 , "'[":0 };
// začátek smyčky
oObj.stats.push(Object.create(myObj));
// konec smyčky
tester
Profil *
Zkusím. Díky


Radek9:
To co si mi doporučil mi ale nefunguje:

  var statObj = { '"': 0 , "'":0, '(': 0, '[': 0, '"(': 0 , "'(":0, '"[': 0 , "'[": 0, '":': 0 , "':": 0 }; 
  oObj = {
    length: 0, 
    results: [],
    stats: [ null ],
    stats_sum: null
    };
  oObj.stats[0] = Object.create(statObj);
  oObj.stats_sum = Object.create(statObj);
ve výsledku je oObj.stat[0] NaN
Tohle mi funguje:
  var statObj = { '"': 0 , "'":0, '(': 0, '[': 0, '"(': 0 , "'(":0, '"[': 0 , "'[": 0, '":': 0 , "':": 0 }; 
  oObj = {
    length: 0, 
    results: [],
    stats: [ { '"': 0 , "'":0, '(': 0, '[': 0, '"(': 0 , "'(":0, '"[': 0 , "'[": 0, '":': 0 , "':": 0 } ],
    stats_sum: { '"': 0 , "'":0, '(': 0, '[': 0, '"(': 0 , "'(":0, '"[': 0 , "'[": 0, '":': 0 , "':": 0 }
    };

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: