Javascript:Array-isn';t改变,它';什么虫子?
数组不随Javascript:Array-isn';t改变,它';什么虫子?,javascript,arrays,Javascript,Arrays,数组不随[…]两种方法更改。拼接(索引,1,更改)和[…][index]=change方法。有关更多信息,请参见示例 注意:我知道js,它在任何地方都会变化,除了t==1。 有人能解释这种行为吗?这是一个已知的bug,还是有解决方案 我想找到解决方案,因为我想创建“Interpolator for Tweening library”,并支持相对字符串(对象、数组、数字在后面我会添加) //RegExp变量 var numRegExp= /\s+|([A-Za-z?(),{}:[\]\\]+)|
[…]两种方法更改。拼接(索引,1,更改)
和[…][index]=change
方法。有关更多信息,请参见示例
注意:我知道js,它在任何地方都会变化,除了t==1
。
有人能解释这种行为吗?这是一个已知的bug,还是有解决方案
我想找到解决方案,因为我想创建“Interpolator for Tweening library”,并支持相对字符串(对象、数组、数字在后面我会添加)
//RegExp变量
var numRegExp=
/\s+|([A-Za-z?(),{}:[\]\\]+)|([-+/*%]+=)([-+*/%]+)(?:\d+\.\d*.\d+([eE][-+].\d+)/g;
//助手
功能s2f(val){
var FLOTEDVAL=解析浮点(val);
返回flootedval的类型==“number”&&&!isNaN(flootedval)?flootedval:val;
}
var relativeModes={
'+=': 1,
'-=': 1,
'*=': 2,
'/=': 3,
'%=': 4
};
功能r2n(s,e){
如果(e的类型=='number'){
返回e-s;
}否则{
var rv=相对模式[e.substr(0,2)],
v=e.R(2);
如果(rv==1){
var e2=e[0]+v;
返回(s+e2))-s;
}否则如果(rv==2){
返回(s*+v)-s;
}否则如果(rv==3){
返回(s/+v)-s;
}否则如果(rv==4){
返回(s*(+v/100))-s;
}
}
返回e;
}
功能s2n(str){
返回str.match(numRegExp).map(s2f);
}
//分裂函数
var stringTween=函数(s、e、d){
d=d!==未定义?d:10000;
var sv=s2n(s);
var ev=s2n(e);
var rv=电动地图(功能(e,i){
返回类型e=='string'&&e.indexOf('=')==1?e:null;
});
电动势=电动势图(功能(e,i){
返回rv[i]!==null?r2n(sv[i],e):e的类型==='number'?e-sv[i]:e;
});
返回函数(t){
var-str='';
对于(变量i=0,len=ev.length;it===1
,相对值不为空,但sv
或ev
未更改,这是错误?'+''; sv[i]+=b; ev[i]=r2n(sv[i],r); } } 返回str; } } //测试用例 var st=performance.now(), rep=1; 请求动画帧(函数动画(时间){ var t=(时间-st)/2000; t=t>1?1:t; document.body.innerHTML++=stringTween('translate3d(10px,20px,30px)','translate3d(+=20px,30px,35px)')(t)+'
'; 如果(t==1){ 如果(代表>0){ 代表--; st=时间 }否则{ 返回false; } } 请求动画帧(anim); });代码>
#注意{
颜色:红色;
}
html{
字体系列:Arial;
字号:1em;
}
测试模式
-Chrome
-NodeJS 6.x
-IE Edge
请不要用不相关的答案来教我,比如在帧循环外使用选择器、优化它、减少重新播放、缓存节点
函数变量不能在函数间共享函数变量不能在函数间共享这真是太多代码了。请尽量减少它。顺便说一句,|0
看起来很聪明,但它将数字范围减少到32位。你的代码应该做什么?你不能期望人们解密你想在这里实现的任何东西。我减少了代码并删除了不必要的代码,我希望现在有人能帮助解决这个问题,因为我需要相对的支持,当我完成后,我会将它发布到npm供自己和他人使用。在NPM注册表上有字符串tween,但还没有相对的支持。这将是第一个支持相对的内插器(我尝试成为最聪明、轻量级和快速的内插器)@cbll我尝试获得相对的字符串tweening(对象、数组、数字在后面都支持),这是只支持字符串的内插器函数。这真的是很多代码。请尽量减少它。顺便说一句,|0
看起来很聪明,但它将数字范围减少到32位。你的代码应该做什么?你不能期望人们解密你想在这里实现的任何东西。我减少了代码并删除了不必要的代码,我希望现在有人能帮助解决这个问题,因为我需要相对的支持,当我完成后,我会将它发布到npm供自己和他人使用。在NPM注册表上有字符串tween,但还没有相对的支持。这将是第一个支持相对的插值器(我尝试成为最智能、轻量级和快速的插值器)@cbll我尝试获得相对字符串tweening(后面支持对象、数组和数字),这是仅用于字符串的插值器函数