我有唯一的数组:
[0, 1, 2, 3, 4, 5, 6, 7, 8]
"上半场"数组的数据是[0,1,2,3,4],第二个是[5,6,7,8]。
现在我应该得到这样的东西(它不是随机混合)
[0, 5, 1, 6, 2, 7, 3, 8, 4]
这是两列的数据数组。我应该将前半部分数据放在第一列中,将第二部分放在第二列中。
我试图找到一个简单的解决方案......感谢您的建议!
答案 0 :(得分:3)
您可以split
使用Math.ceil
对数组进行var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8], c = 1
var half = arr.splice(Math.ceil(arr.length / 2))
half.forEach(e => (arr.splice(c, 0, e), c += 2))
console.log(arr)
舍入数字,然后循环第一部分,并将第二部分递增计数器中的每个元素加2。
{{1}}
答案 1 :(得分:1)
使用map和内联if语句
尝试以下操作
var array = [0,1,2,3,4,5,6,7,8]
var result = array.map(function(item,index){
return (index%2 == 0) ? array[index/2] : array[Math.floor((index+array.length)/2)];
});
console.log(result);

答案 2 :(得分:0)
您可以计算索引并映射数组中的值。
(i >> 1) + ((i & 1) * ((a.length + 1) >> 1)) ^^^^^^^^ take the half integer value ^^^^^^ check for odd ^^^^^^^^^^^^ adjust length ^^^^^^^^^^^^^^^^^^^^ the half value of adjusted length
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8],
result = array.map((_, i, a) => a[(i >> 1) + ((i & 1) * ((a.length + 1) >> 1))]);
console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }