在Javascript中循环数组时检测值何时更改?
我有一个数组,其中有重复的值。我需要对类似的元素进行分组,当值更改时,创建一个新的“部分” 我的数组有点像在Javascript中循环数组时检测值何时更改?,javascript,loops,Javascript,Loops,我有一个数组,其中有重复的值。我需要对类似的元素进行分组,当值更改时,创建一个新的“部分” 我的数组有点像 {section: "An Hour before Dinner", title: "Cook peas"}, {section: "An Hour before Dinner", title: "Take pie out"}, {section: "As guests arrive", title: "Mix drinks"}, {section: "Just Before Desser
{section: "An Hour before Dinner", title: "Cook peas"},
{section: "An Hour before Dinner", title: "Take pie out"},
{section: "As guests arrive", title: "Mix drinks"},
{section: "Just Before Dessert", title: "Reheat at 325 about 20 minutes."},
{section: "Just Before Dessert", title: "Cut and serve."},
An Hour Before Dinner
Cook peas
Take pie out
As guests arrive
Mix Drinks
Just before dessert
Reheat at 325 about 20 minutes.
Cut and serve.
我需要做一些类似的事情
{section: "An Hour before Dinner", title: "Cook peas"},
{section: "An Hour before Dinner", title: "Take pie out"},
{section: "As guests arrive", title: "Mix drinks"},
{section: "Just Before Dessert", title: "Reheat at 325 about 20 minutes."},
{section: "Just Before Dessert", title: "Cut and serve."},
An Hour Before Dinner
Cook peas
Take pie out
As guests arrive
Mix Drinks
Just before dessert
Reheat at 325 about 20 minutes.
Cut and serve.
由于有时我的数组可能有更少或更多的元素,我需要循环它,当值更改时,使用新值创建一个新标题,然后循环遍历元素,直到出现下一个不同的项并创建下一个标题,等等。假设它们正确排序,并在数组“arr”中:
var events = [/* as in the question */];
var groupedEvents = {};
for (var i = 0; i < events.length; ++i) {
var time = events[i].section;
var action = events[i].title;
if (!groupedEvents.hasOwnProperty(time)) {
groupedEvents[time] = [];
}
groupedEvents[time].push(action);
}
var-pre='';
对于(变量i=0;i
假设它们已正确排序,并且在数组“arr”中:
var-pre='';
对于(变量i=0;i
这应该可以做到:
var arr = [
{section:"An Hour before Dinner", title:"Cook peas"},
{section:"An Hour before Dinner", title:"Take pie out"},
{section:"As guests arrive", title:"Mix drinks"},
{section:"Just Before Dessert", title:"Reheat at 325 about 20 minutes."},
{section:"Just Before Dessert", title:"Cut and serve."}
];
var s = null;
var html = "";
for (var i = 0, l = arr.length; i<l; i++) {
var r = arr[i];
if (r.section != s) {
// New section
s = r.section;
html += "<h1>"+s+"</h1>"
} else {
// Continue old section
}
html += "<p>"+r.title+"</p>";
}
var div = document.createElement('div');
div.innerHTML = html;
document.body.appendChild(div);
var-arr=[
{章节:“晚餐前一小时”,标题:“煮豌豆”},
{章节:“晚餐前一小时”,标题:“拿出馅饼”},
{章节:“客人到达时”,标题:“混合饮料”},
{章节:“甜点前”,标题:“在325度加热约20分钟。”},
{章节:“甜点前”,标题:“切好后上菜。”}
];
var s=null;
var html=“”;
对于(var i=0,l=arr.length;i这应该可以做到:
var arr = [
{section:"An Hour before Dinner", title:"Cook peas"},
{section:"An Hour before Dinner", title:"Take pie out"},
{section:"As guests arrive", title:"Mix drinks"},
{section:"Just Before Dessert", title:"Reheat at 325 about 20 minutes."},
{section:"Just Before Dessert", title:"Cut and serve."}
];
var s = null;
var html = "";
for (var i = 0, l = arr.length; i<l; i++) {
var r = arr[i];
if (r.section != s) {
// New section
s = r.section;
html += "<h1>"+s+"</h1>"
} else {
// Continue old section
}
html += "<p>"+r.title+"</p>";
}
var div = document.createElement('div');
div.innerHTML = html;
document.body.appendChild(div);
var-arr=[
{章节:“晚餐前一小时”,标题:“煮豌豆”},
{章节:“晚餐前一小时”,标题:“拿出馅饼”},
{章节:“客人到达时”,标题:“混合饮料”},
{章节:“甜点前”,标题:“在325度加热约20分钟。”},
{章节:“甜点前”,标题:“切好后上菜。”}
];
var s=null;
var html=“”;
对于(var i=0,l=arr.length;i)您可以使用主干。js@Steve:您的数组语法不正确(请检查以查看我更改了什么)。我认为这是在创建问题时的一个输入错误,而不是源代码中的输入错误。听起来你可以利用主干。js@Steve:您的数组语法不正确(请检查以查看我更改了什么)。我在创建问题时假设这是一个输入错误,而不是源代码中出现的输入错误。谢谢。实际上,我的数组是这样的,因为它实际上是一个对象数组,来自Tianium javascript文件。当然,对于普通数组,你是正确的。谢谢。实际上,我的数组是这样的,因为它实际上是一个o数组对象,来自Tianium javascript文件。当然,使用普通数组是正确的。