我正在为每个公式创建一个对象。公式[0] = start_obj是unixtimestamps,公式1也是unixtimestamps。在某些情况下,我需要切断阵列中的最后一个印章。我尝试使用pop()和splice()方法。两者都引入rangeError。javascript .pop()方法导致范围错误
这是我的代码:
var formel_obj = {} ;
formel_obj.start_obj = "change=[ ((x1))>0 ]; start=[ T(find(change)); T(1) ]; res=[start];" ;
formel_obj.stop_obj = "change=[ ((x1))<0 ]; stop=[ T(find(change)); T(1) ]; res=[stop];" ;
var label, formel ;
for(label in formel_obj) {
formel = formel_obj[label] ;
this[label] = new Array() ;
this[label] = wedge.calc.eval_with_timeaxis(formel, tag_x1, {timebase: interval_length, intervals: [ { start: t_axis_start, end: t_axis_stop } ] })[0] ; // creating for both formel ojects an array from function - see console log
}
last=start_obj[Object.keys(start_obj).length - 1] ;
pre_last=start_obj[Object.keys(start_obj).length - 2] ;
if (last < pre_last) {
console.log(start_obj.length) ;
console.log(start_obj) ;
start_obj.pop() ; results in Range error , why?
}
阵列(S)从控制台的样子:
>> start_obj
[1446153600, 1446163200, 1446170400, 1446229200, 1446270600, 1446364200, 1446366600, 1446415200, 1446422400, 1446436200, 1446452400, 1446457200, 1446472200, 1446133800]
>> stop_obj
[1446157800, 1446164400, 1446173400, 1446267000, 1446363000, 1446364800, 1446409200, 1446421800, 1446435000, 1446450600, 1446456600, 1446464400, 1446472800, 1446133800]
>> start_obj[0]
1446153600
>> start_obj.length
14
>> start_obj.pop()
is RangeError .....
我真的不知道为什么;(
任何想法
。
EDIT_1:
其运行时阵列,请参阅控制台的屏幕。 Screenshot
EDIT_2:再次
感谢球员,你的要命。我明白这不是一个普通的数组。我写了一个函数,将这个混乱的数组(或以前的东西)转换成一个常规数组。这是商业软件,我没有直接访问这些“后台功能”wedge.what.ever()正在做什么。 无论如何,谢谢大家闪电般的讨论发生在这里。
这里是transformfunction:
function form_reg_array (runtimearray) {
var item ;
newarray = new Array() ;
for (item in runtimearray) {
newarray.push(runtimearray[item]) ;
}
return newarray
}
我把它想:
start_obj=form_reg_array(start_obj)
其转换成规则排列!感谢大家的大声思考。
您的start_obj变量在哪里定义?它是否存在于formel_obj对象上?您可能试图从未初始化的数组中弹出。 –
'wedge.calc.eval_with_timeaxis(...)[0]'返回什么样的数据?你创建一个数组,然后用这个值替换它。如果这实际上不是数组,则不能将其用作数组。 – Guffa
@CameronTinker:'start_obj'变量在循环中创建:'this [label] = ...'其中'label ==“start_obj”'。 – Guffa