我正在尝试重新划分阵列。
所以拿这个数组[col1,col2,col3,col4]
我需要嵌套数组 - 所以第一个元素就像这样
[[col1],[col2,col3,col4]]
我已经尝试了以下代码 - 但它然后将col2推入第一个数组位置
jsfiddle.net/0ht35rpb/57 - 我的例子正在做什么
k['key'] = i
if (i % 2 === 0) {
m.push([k])
} else {
m[m.length - 1].push(k)
}
return m
我的努力:
function arrayMaker(menu) {
var l = []
menu.reduce((m, k, i) => {
if (i === 0) {
m.push([k])
} else {
l.push(k)
}
if (i === menu.length - 1) {
m.push(l)
}
console.log("m", m)
return m
}, [])
}
var menu = ["col1", "col2", "col3", "col4"]
var nest = arrayMaker(menu)
console.log("nest", nest)

好吧伙计们 - 这是代码的全部内容 - 为什么它看起来如此复杂,如此简单。
{
lang.menu.reduce((m, k, i) => {
m.push(k)
if (i === lang.menu.length - 1) {
m = [m.slice(0, 1), m.slice(1)]
}
return m
}, []).map((grouped, index) => (
<div key={index} className={index === 0 ? 'main-footer__left' : 'main-footer__right'}>
{
<div className='row grid__row--offset--30'>
{
grouped.map((item, j) =>
<div key={j} className={(index === 0 && j === 0 ? 'large-45 large-centered' : 'large-14 large-offset-5') + ' columns'}>
<h2 className='text--uppercase text--white footer-text'>{item.title}</h2>
{
item.switch
? <p className='text--white grid__row--offset--15 footer-text'>
{
item.children.map(function (child, j) {
return (
<Link key={j} className={'text--white footer-text transition ' + (props.active_language === child.title.toString().toLowerCase() ? activeLang : alternativeLang)} to={urls[j]}>{child.title}</Link>
)
})
}
</p>
: item.children.map(function (child, j) {
return (
<div key={j} className={(j === 0 ? ' grid__row--offset--15' : '')}>
<Link className='text--white footer-text transition' to={child.link}>{child.title}</Link>
</div>
)
})
}
</div>
)
}
</div>
}
</div>
))
}
答案 0 :(得分:2)
您可以将Array#slice
与数组一起用于新数组。
var array = [1, 2, 3, 4],
result = [array.slice(0, 1), array.slice(1)];
console.log(result);
答案 1 :(得分:2)
我喜欢欺骗:
var array = [1, 2, 3, 4],
result = [[array.shift()], array];
console.log(result);
答案 2 :(得分:0)
另一个
var arr=[1,2,3,4];
var result=arr.reduce((a,e,i)=>((a[i?1:0]=a[i?1:0]||[]).push(e),a),[]);