array push broken ?
Gary M
garym at oedata.com
Wed Dec 24 02:11:52 UTC 2014
hi,
I'm new to nashorn and have bumped into some issues with arrays.
Occasionally, arrays length property is undefined, values are returned as
null and push doesn't always seem to work.
I have this code I'm porting from C
This is the output of the code:
SchemeTest-> internal scheme identifier validator - sunny day: START
entry:
{"eid":"test_scheme0_test_dest0_test_acc0_test_evt0","sevt":"","priority":"0"}
array: []
array final: []
The entry should have been pushed into the array, its not.
the code is in the first for loop.
All the other loops the arrays work correctly..
I have changed var positions in the code, with no change.
I have replaced the "_evti= new Array'" with "_evti= [];" with no change.
any suggestions ?
-g
var buildpath = function (sids,dids,aids,eids,pris){
var _sida;
var _dida;
var _aida;
var _eida;
var _pria;
var _schi;
var _dsti;
var _acci;
var _evti;
// check if parameters are string, if they are make into array
if ((sids)&&(typeof sids === 'string')) _sida= new Array(sids);
if ((dids)&&(typeof dids === 'string')) _dida= new Array(dids);
if ((aids)&&(typeof aids === 'string')) _aida= new Array(aids);
if ((eids)&&(typeof eids === 'string')) _eida= new Array(eids);
if ((eids)&&(typeof eids === 'string')) _eida= new Array(eids);
if ((pris)&&(typeof pris === 'string')) _pria= new Array(pris);
// start building the path sections from the bottom up
if(_eida){
_evti= new Array;
// loop through the list
for ( var i in _eida){
var x = new Object;
// set the event's identifier
x.eid=_eida[i];
// set the event event record type
x.sevt="";
// set the event priority
x.priority=_pria[i];
// add it to the list
_evti.push[x];
_evti.push["dog"];
print ( "entry: " + JSON.stringify(x));
print ( "array: " + JSON.stringify(_evti));
}
}
print ( "array final: " + JSON.stringify(_evti));
//build the accept list
if(_aida){
_acci= new Array;
// loop through the list
for ( var i in _aida){
var x = new Object;
// set the event's identifier
x.aid=_aida[i];
// set the event event record type
x.sacc="";
// set the event list
x.evtli=new Array;
if (_evti)
x.evtli=_evti;
// add it to the lis
_acci.push(x);
}
}
//build the destination
if(_dida){
_dsti= new Array;
// loop through the list
for ( var i in _dida){
var x = new Object;
// set the event's identifier
x.did=_dida[i];
// set the event event record type
x.sdst="";
// set the event event priority
x.accli=new Array;
if (_acci)
x.accli=_acci;
// add it to the lis
_dsti.push(x);
}
}
//build the scheme
if(_sida){
_schi= new Array;
// loop through the list
for ( var i in _sida){
var x = new Object;
// set the event's identifier
x.sid=_sida[i];
// set the event event record type
x.ssch="";
// set the destinations
x.dstli=new Array;
if (_dsti)
x.dstli=_dsti;
// add it to the lis
_schi[i]= x;
}
}
var rtnpath;
// build the return path
if (_schi) rtnpath=JSON.stringify(_schi);
else if (_dsti)rtnpath=JSON.stringify(_dsti);
else if (_acci)rtnpath=JSON.stringify(_acci);
else if (_evti)rtnpath=JSON.stringify(_evti);
return rtnpath;
};
More information about the nashorn-dev
mailing list