Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按每两个元素映射一个数组_Javascript_Arrays_Dictionary - Fatal编程技术网

Javascript 按每两个元素映射一个数组

Javascript 按每两个元素映射一个数组,javascript,arrays,dictionary,Javascript,Arrays,Dictionary,假设我有一个服务对象数组 services: [{title: title, caption: caption},{title: title, caption: caption},{title: title, caption: caption},{title: title, caption: caption}] 最终结果是一个映射数组,在它自己的div中每两个元素一个 <div> <div>services[0]</div> <div>ser

假设我有一个服务对象数组

services: [{title: title, caption: caption},{title: title, caption: caption},{title: title, caption: caption},{title: title, caption: caption}]
最终结果是一个映射数组,在它自己的div中每两个元素一个

<div>
 <div>services[0]</div>
 <div>services[1]</div>
</div>
<div>
 <div>services[2]</div>
 <div>services[3]</div>
</div>

服务[0]
服务[1]
服务[2]
服务[3]

我不知道我该如何做到这一点?是否按每两个元素映射并拆分数组?将数组拆分为两个数组,然后映射该数组?现在是凌晨吗?是的

您可以使用
for
循环,该循环递增2,并在
map
方法中创建字符串,然后将其添加到html中

const data=[{title:'title',caption:'caption'},{title:'title',caption'},{title:'title',caption:'caption'},{title:'title',caption'},{caption:'caption'}]
让html='';
对于(变量i=0;i`${title}|${caption}`)
.加入(“”)
html+=`${divs}`;
}
document.body.innerHTML+=html使用(索引%2)关闭和打开新div

var数组=[
{title:'title',caption:'caption'},
{title:'title',caption:'caption'},
{title:'title',caption:'caption'},
{title:'title',caption:'caption'},
{title:'title',caption:'caption'},
{title:'title',caption:'caption'}
]
var html=''
forEach(函数(项、索引){
html+=''+item.title+''
html+=''+item.caption+''
如果(索引%2){
html+=''
}
})
html+=''
document.getElementById('result').insertAdjacentHTML('beforeend',html)
.row{
利润率:20px 0px;
背景色:#DDD;
}

只需两人一组循环项目

var服务=[
{标题:'title1',标题:'caption1'},
{标题:'title2',标题:'caption2'},
{标题:'title3',标题:'caption3'},
{标题:“标题4”,标题:“标题4'}
];
对于(变量i=0;i}
是的,一种方法是按每两个元素对数组进行分组,但您可以先使用
reduce
,然后使用
map

reduce
的回调,您可以使用空数组初始化累加器,因此它的结果如下所示:

服务=[{
标题:“标题0”,
标题:“caption0”
}, {
标题:“标题1”,
标题:“标题1”
}, {
标题:“标题2”,
标题:“标题2”
}, {
标题:“标题3”,
标题:“标题3”
}];
服务。减少(
函数(累加器、currentValue、currentIndex、数组){
如果(当前索引%2==0)
累加器.push(数组.slice(currentIndex,currentIndex+2));
回流蓄能器;

},[]).map(p=>(console.log(p[0],p[1]))
您是如何创建html的?我不确定是否理解您的问题…如果长度不是奇数,数组的某些值是否可能会丢失?@OmamaZainab目的是将数组分成两个对,因此我不确定它“工作”意味着什么如果数组中的项目数为奇数。