- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Javascript 中,当您有一组数组来对数据集执行任务,并且有时您不想包含所有数组而是包含组合时,处理这种情况的最佳方法是什么。
我的数组在这个小片段 L、C、H、V、B、A、S 中进行了标记,从 Angular 来看,代码大约有 2500 行,如下所示。 (我已经从这篇文章中删除了代码注释)
if(C[0].length>0){
L=L[1].concat(+(MIN.apply(this,L[0])).toFixed(7));
C=C[1].concat(C[0][0]);
H=H[1].concat(+(MAX.apply(this,H[0])).toFixed(7));
V=V[1].concat((V[0].reduce(function(a,b){return a+b}))/(V[0].length));
B=B[1].concat((MAX.apply(this,B[0])-MIN.apply(this,B[0]))/2);
A=A[1].concat((MAX.apply(this,A[0])-MIN.apply(this,A[0]))/2);
D=D[1].concat((D[0].reduce(function(a,b){return a+b}))/(D[0].length));
S=S[1].concat((S[0].reduce(function(a,b){return a+b}))/(S[0].length));
}
在这种情况下,用 bool 条件的语气在代码中乱七八糟地询问每个循环或代码部分是否包含在任务中似乎会适得其反,甚至更愚蠢的是在每个循环迭代中询问内联条件,因为这些也会减慢处理速度,并使代码看起来像迷宫或兔子洞。
是否有逻辑方法/库来忽略指令或在选项设置为 false 时跳过
到目前为止我所想到的都是毫无意义的内联事物
var op=[0,1,1,0,0,0,0,0]; //options
var L=[],C=[],H=[],V=[],B=[],A=[],D=[],S=[];
op[0]&&[L[0]=1];
op[1]&&[C[0]=1,console.log('test, do more than one thing')];
op[2]&&[H[0]=1];
op[3]&&[V[0]=1];
op[4]&&[B[0]=1];
op[5]&&[A[0]=1];
op[6]&&[A[0]=1];
它的工作原理是根据选项要求仅将 C[0]
和 H[0]
设置为 1,但它失败了,因为它需要提出七个问题循环的每次迭代,因为它可以在循环内完成。不是制作循环或代码部分的七个版本,也不是在每个循环内提出问题,是否还有另一种风格/方法?
我还注意到,如果我创建一个数组,那么在某个时候使其等于 NaN 而不是 undefined 或 null 控制台不会提示
var L=[],C=[],H=[],V=[],B=[],A=[],D=[],S=[];
L=NaN;
L[0]=1;
//1
console.log(L); //NaN
L=undefined;
L[0]=1
//TypeError: Cannot set property '0' of undefined
L=null
L[0]=1
//TypeError: Cannot set property '0' of null
我变暖了吗?我假设如果我在 isNaN(L)===true
时对 L[0]
执行一些数学运算,则数学运算正在完成但未存储,因此该行是真的没有被忽视..
最佳答案
如果我明白你想要什么,我会做这样的事情。
var op = [...],
opchoice = {
//these can return nothing, no operation, or a new value.
'true': function(val){ /*operation do if true*/ },
'false': function(val){ /*operation do if false*/ },
//add more operations here.
//keys must be strings, or transformed into strings with operation method.
operation: function(val){
//make the boolean a string key.
return this[''+(val == 'something')](val);
}
};
var endop = [];//need this to prevent infinite recursion(loop).
var val;
while(val = op.shift()){
//a queue operation.
endop.push(opchoice.operation(val));
}
我确信这并不完全是您想要的,但它已经接近满足不需要到处都有大量条件的需求。
您的另一个选择是在每一行上执行此操作。
A = isNaN(A) ? A.concat(...) : A;
我个人更喜欢另一种方法。
关于javascript - 编程可选无知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26705294/
过去几个小时我一直在研究这个,我似乎无法找到它为什么不工作,store_car_stats 函数中的 printf 从我的 argv 打印奇怪的东西,它在 gdb 上运行,但通常会出现段错误.这真的很
我有一个 XML 文件,其中有一个名为 TEXT 的标签 当我尝试使用 android 的 org.xml.sax 解析文件时解析器,不解析整个标签,仅解析前几个字符 这是我的TEXT标签 Sampl
我有一个相当简单的查询,大多数运行速度非常快,在其他极少数情况下最多需要 30 秒。我不知道是什么原因造成的。这是我正在讨论的示例。 mysql> UPDATE matchSessionMembers
在我们的应用程序中,我们有一个 C++ 静态库,我使用 Objective-C++ 来处理它。该 c++ 库利用 rapidjson 解析 XML 数据: try { rapi
我是一名优秀的程序员,十分优秀!