Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops - Fatal编程技术网

在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文件。当然,使用普通数组是正确的。