javascript数组分配给多个变量

时间:2017-07-15 06:11:12

标签: javascript arrays

我有点逻辑问题。我想将数组分配给几个变量。但它不起作用。感谢您的帮助。

PS:变量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];

如果var值= [5,4,3,6,7,8];预期输出:

A = [5, 6, 10];
B = [4, 7, 20];
A = [3, 8, 30];    

如果var值= [5,4,3,6,7,8,10,20,30];预期输出:

transfer_new

4 个答案:

答案 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;
&#13;
&#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%; }