在javascript的.map()方法中使用迭代器和if语句
Use iterator and if-statement in a .map( ) method in javascript
我有一个对象数组。每个对象都有一个日期键,在某些情况下,它在不同对象中是相同的值。我试图打印日期只有一次为所有这些对象具有相同的日期。(我使用angular作为框架)这里是数组:
[
{
date:"07/02/2015",
time: "03:00 PM"
activity: "gym"
}
{
date:"07/02/2015",
time: "08:30 AM"
activity: "gym"
}
{
date:"10/25/2015",
time: "06:00 PM"
activity: "yoga"
}
]
浏览器预期结果:
On 07/02/2015 you have,
gym at 03:00 PM
yoga at 08:30 AM
On 10/25/2015 you have,
yoga at 06:00 PM
这是我认为会工作的代码,但它没有:
$scope.Activitylist = data.map(function(oneActivity, index){
if($scope.Activitylist[index].date === $scope.Activitylist[index+1].date){
return {
time: oneActivity.time,
activity: oneActivity.activity
}
}
else{
return{
date: oneActivity.date,
time: oneActivity.time,
activity: oneActivity.activity
}
}
})
可以使用unique
预定义过滤器。你的HTML结构就像
<div class="list" ng-repeat="oneActivity in Activitylist | unique:'date'">
<div class="Date">{{oneActivity.date}}</div>
<div class="Time">{{oneActivity.time}}</div>
<div class="Amount">{{oneActivity.avtivity}}</div>
</div>
这可能看起来像你想要一个映射,但由于您正在寻找组合记录,而不是创建一个具有相同数量记录的新数组,映射将无法工作。
不清楚如何从数组移动到输出,因此这仅仅是一个建议:
var result = {};
data.forEach(function(i) {
if (i.date in result) {
result[i.date].activities.push(i);
} else {
result[i.date] = {};
result[i.date].activities = [i];
}
});
这将创建一个对象result
,其中每天有一个键。每个day对象都有一个活动数组,其中包含当天的活动。如果您想获得在控制台中显示的准确输出,可以这样做:
for(key in result) {
console.log('On ' + key + 'you have, 'n', result[key].activities.map(function(i) { return ' ' + i.activity + ' at ' + i.time; }).join(''n'));
}
相关文章:
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- 从两个基于0的for循环迭代器中获取单个基于0的索引的公式
- Rails:试图在javascript(Google Charts API)中嵌入一个adv-ruby(each+迭代器
- 在javascript中,从迭代器创建Array
- Javascript中的迭代器和生成器
- 从迭代器/生成器中获取单个yield值
- 迭代器和可迭代之间的区别
- 文件夹迭代器中的Google驱动器文件迭代器
- DOM:如何根据迭代器值设置元素宽度并在mouseover上调用函数
- javascript中多维数组的迭代器
- 迭代Promise迭代器的非递归方法
- 循环中的Node.js回调具有错误的迭代器值
- underscore.js,迭代器引用错误
- 去掉foreach中的自定义绑定以获取迭代器
- 迭代器中的return element.parentNode
- 如何使用量角器+angular获取迭代器索引/键
- 在jquery each()迭代器函数中访问JS对象
- jQuery 改进表迭代器
- 在javascript的.map()方法中使用迭代器和if语句
- 返回语句中的Javascript迭代器