Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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_Typescript_Ecmascript 5 - Fatal编程技术网

在javascript中使用数组对象键中的条件基循环和创建编号

在javascript中使用数组对象键中的条件基循环和创建编号,javascript,arrays,typescript,ecmascript-5,Javascript,Arrays,Typescript,Ecmascript 5,嗨,我正在尝试根据数组对象键条件创建这种循环模式, 如果'o'具有't',我们将从对象中的'n'起点开始索引,否则我们将从主计数器继续编号 数据数组: let data = [ {o:[],n:1}, //empty o could be our main counter this could also be dynamic or any number to start {o:[],n:1}, {o:['t'],n:1}, //has t number start from n

嗨,我正在尝试根据数组对象键条件创建这种循环模式, 如果'o'具有't',我们将从对象中的'n'起点开始索引,否则我们将从主计数器继续编号

数据数组:

 let data = [
  {o:[],n:1}, //empty o could be our main counter this could also be dynamic or any number to start
  {o:[],n:1},
  {o:['t'],n:1}, //has t number start from n
  {o:['t'],n:1}, 
  {o:[],n:1}, // continue the last count of main counter
  {o:[],n:1},
  {o:['t'],n:1},
  {o:[],n:1},
  {o:[],n:1},
  {o:['t'],n:5},
  {o:['t'],n:5},
  {o:['t'],n:5}, 
  {o:[],n:1}, 
]
 recount(data){
   for (var i = 0; i < data.length; i++) {
     //code here 
     //new can also modify data[i].n
     console.log(**numbering**)
   }
 }
那么当我运行此代码时:

 let data = [
  {o:[],n:1}, //empty o could be our main counter this could also be dynamic or any number to start
  {o:[],n:1},
  {o:['t'],n:1}, //has t number start from n
  {o:['t'],n:1}, 
  {o:[],n:1}, // continue the last count of main counter
  {o:[],n:1},
  {o:['t'],n:1},
  {o:[],n:1},
  {o:[],n:1},
  {o:['t'],n:5},
  {o:['t'],n:5},
  {o:['t'],n:5}, 
  {o:[],n:1}, 
]
 recount(data){
   for (var i = 0; i < data.length; i++) {
     //code here 
     //new can also modify data[i].n
     console.log(**numbering**)
   }
 }

感谢您的帮助

这是一个直接循环,但需要保留两个计数器:

  • 一个是普通计数器,用于
    o
    不包含
    “t”
    的项目,我们只是每次递增它
  • 另一个是当
    o
    包含
    “t”
    时要添加到
    n
    的偏移量。它从零开始。
    • 对于与条件匹配的每个连续项,它将增加1
    • 如果我们停止遇到符合条件的项,它将重置回零
仅使用ES5,这可能如下所示:

var数据=[
{o:[],n:1},//空的o可以是我们的主计数器这也可以是动态的,也可以是任何开始的数字
{o:[],n:1},
{o:['t'],n:1},//t编号从n开始
{o:['t'],n:1},
{o:[],n:1},//继续主计数器的最后一次计数
{o:[],n:1},
{o:['t'],n:1},
{o:[],n:1},
{o:[],n:1},
{o:['t'],n:5},
{o:['t'],n:5},
{o:['t'],n:5},
{o:[],n:1},
]
功能重新计数(数据){
var计数器=1;
var offsetT=0;
对于(变量i=0;i控制台日志(数据)这是一个直接的循环,但需要保留两个计数器:

  • 一个是普通计数器,用于
    o
    不包含
    “t”
    的项目,我们只是每次递增它
  • 另一个是当
    o
    包含
    “t”
    时要添加到
    n
    的偏移量。它从零开始。
    • 对于与条件匹配的每个连续项,它将增加1
    • 如果我们停止遇到符合条件的项,它将重置回零
仅使用ES5,这可能如下所示:

var数据=[
{o:[],n:1},//空的o可以是我们的主计数器这也可以是动态的,也可以是任何开始的数字
{o:[],n:1},
{o:['t'],n:1},//t编号从n开始
{o:['t'],n:1},
{o:[],n:1},//继续主计数器的最后一次计数
{o:[],n:1},
{o:['t'],n:1},
{o:[],n:1},
{o:[],n:1},
{o:['t'],n:5},
{o:['t'],n:5},
{o:['t'],n:5},
{o:[],n:1},
]
功能重新计数(数据){
var计数器=1;
var offsetT=0;
对于(变量i=0;i控制台日志(数据)只是一个简单的算法,如果您需要帮助来理解它,请告诉我,我可以向您解释您不理解的内容

let数据=[
{o:[],n:1},//空的o可以是我们的主计数器这也可以是动态的,也可以是任何开始的数字
{o:[],n:1},
{o:[“t”],n:1},//t编号从n开始
{o:[“t”],n:1},
{o:[],n:1},//继续主计数器的最后一次计数
{o:[],n:1},
{o:[“t”],n:1},
{o:[],n:1},
{o:[],n:1},
{o:[“t”],n:5},
{o:[“t”],n:5},
{o:[“t”],n:5},
{o:[],n:1},
];
设编号=1;
让我们来看看数字;
让前一个=假;
功能重新计数(数据){
对于(变量i=0;i
只是一个简单的算法,如果您需要帮助理解它,请告诉我,我可以向您解释您不理解的内容

let数据=[
{o:[],n:1},//空的o可以是我们的主计数器这也可以是动态的,也可以是任何开始的数字
{o:[],n:1},
{o:[“t”],n:1},//t编号从n开始
{o:[“t”],n:1},
{o:[],n:1},//继续主计数器的最后一次计数
{o:[],n:1},
{o:[“t”],n:1},
{o:[],n:1},
{o:[],n:1},
{o:[“t”],n:5},
{o:[“t”],n:5},
{o:[“t”],n:5},
{o:[],n:1},
];
设编号=1;
让我们来看看数字;
让前一个=假;
功能重新计数(数据){
对于(变量i=0;i
您必须使用es5吗?我看到您使用的是
let
,它是es6feature@NickParsons还有速记法符号
重新计数(数据)
,它也是ES6。是的,但它是可选的,我们可以使用它,也可以不使用它。你必须使用es5吗?我看到您使用的是
let
,它是es6feature@NickParsons还有速记法符号
重新计数(数据)
,也是ES6。是的,但它是可选的,我们可以使用它,也可以不使用它。谢谢@VLAZ:)它几乎可以工作了。但是起始数字总是1。在数据的索引0处。。这可能是动态的