我有点逻辑问题。我想将数组分配给几个变量。但它不起作用。感谢您的帮助。
function Case(values){
var A = [];
var B = [];
var C = [];
if (temp === 0){
A.push(values);
temp+=1;
} else if (temp === 1){
B.push(values);
temp+=1;
} else if (temp === 2){
C.push(values);
temp = 0;
}
return [A,B,C];
}
var temp = 0;
var values = [5, 4, 3, 6, 7 , 8];
Case(values);
将是动态的。A = [5, 6];
B = [4, 7];
A = [3, 8];
A = [5, 6, 10];
B = [4, 7, 20];
A = [3, 8, 30];
transfer_new
答案 0 :(得分:2)
function Case(values){
console.log("values: " + values);
var A = [];
var B = [];
var C = [];
var i = 0;
while(i < values.length) {
A.push(values[i++]);
B.push(values[i++]);
C.push(values[i++]);
}
console.log("A: " + A);
console.log("B: " + B);
console.log("C: " + C);
}
var values = [5, 4, 3, 6, 7 , 8];
Case(values);
values = [5, 4, 3, 6, 7 , 8, 10, 20, 30];
Case(values);
&#13;
注意:values
数组应始终具有3的倍数的元素数,因为在这种情况下有3个数组,A和B。
答案 1 :(得分:0)
如果数组长度固定,您只需要执行:
function Case(values){
var A = [];
var B = [];
var C = [];
var res;
var temp = 0;
A.push(values[0]);
A.push(values[3]);
B.push(values[1]);
B.push(values[4]);
C.push(values[2]);
C.push(values[5]);
return [A,B,C]
}
答案 2 :(得分:0)
function Case(values){
var i = values;
var A = [];
var B = [];
var C = [];
var temp = 0;
A = A.concat(getItem(0));
B = B.concat(getItem(1));
C = C.concat(getItem(2));
console.log(A); console.log(B); console.log(C);
}
function getItem(j){
return values.filter(function(v,k){
if((k == j) ||(k == (j+3))){
return true;
}
});
}
var values = [5, 4, 3, 6, 7 , 8];
Case(values);
答案 3 :(得分:0)
一种功能方法是将数组拆分为3个块,然后转置块。
function chunksOf(arr, n) {
var i = 0, result = [];
while (i < arr.length) {
result.push(arr.slice(i, i += n));
}
return result;
}
function transpose(arr) {
return arr[0].map((_, i) => arr.map(a => a[i]));
}
var values = [5, 4, 3, 6, 7 , 8];
var [a, b, c] = transpose(chunksOf(values, 3));
console.log(a);
console.log(b);
console.log(c);
.as-console-wrapper { min-height: 100%; }