首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >涉及数组的循环问题

涉及数组的循环问题
EN

Stack Overflow用户
提问于 2019-06-15 15:58:05
回答 2查看 622关注 0票数 2

我正在尝试建立一个基于模拟元数据的for-循环。

data 表示数据内容。

Meta表示3种不同的元数据类型。如果有1,则表示数据中存在元数据,如果存在0,则表示它不存在。

如果存在元数据,则 size 表示每个数据的大小。因此,如果有大小为3的11-1元数据:

  • 它表示数组中的元1前3元素,数组中的元2下3元素,数组中的meta 3下3元素。

我遇到的问题是正确地从左到右依次读取它,如果它耗尽了数据而不创建新的数据,就停止从数组中读取。

如果我们有1,2,3,4,5的数据和1,1,1的元数据,那么它应该是:

元1: 1

元2: 2

元3: 3

或者,如果数据为1、2、34、5、6、7、8、9、10、11、12,而元数为1、0、1,大小为4,则应为:

元1: 1 2 3 4

元2:没有

元3: 5 6 7 8

到目前为止我所拥有的是:

代码语言:javascript
运行
复制
let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let meta = [1, 0, 1];
let size = 4;

for (let i = 0; i < 3; i++) {
  if (meta[i]) {
      if (i == 0) {
          console.log('Meta', 1);
          for (let i = 0; i < size; i++) {
              console.log(data[i]);
          }
      }
      if (i = 1) {
        console.log('Meta', 2);
        for (let i = 0; i < size; i++) {
              console.log(data[i] + size);
          }
      }
      if (i = 2) {
        console.log('Meta', 3);
         for (let i = 0; i < size; i++) {
              console.log(data[i] + size + size);
          }
      }
  }
}

EN

回答 2

Stack Overflow用户

发布于 2019-06-15 16:09:47

您可以通过以下步骤实现这一点:

  • 创建一个以datametasize为三个参数的函数。
  • 创建一个空数组,这将导致结果。
  • 然后在meta数组上循环。
  • 然后从一开始就得到数组的部分,等于数组的大小。并将其放入结果数组中。
  • 从原始数组中删除添加的部件。
  • 最后返回结果

代码语言:javascript
运行
复制
let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let meta = [1, 0, 1];
let size = 4;
function parts(data,meta,size){
  let res = [];
  for(let i = 0;i<meta.length;i++){
    res.push(data.slice(0,size * meta[i]));
    data = data.slice(meta[i] * size);
  }
  return res;
}

console.log(parts(data,meta,size))

票数 2
EN

Stack Overflow用户

发布于 2019-06-15 16:11:46

听起来,如果元标志是真的话,您只想从slice获取大小为sizedata。您应该能够做到这一点,只需在meta上循环,同时跟踪数据中的当前位置:

代码语言:javascript
运行
复制
let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let meta = [1, 0, 1];
let size = 4;
let res = [];

for (let i = 0, cur = 0; i < meta.length; i++){
    res.push(data.slice(cur, cur + size * meta[i]))
    cur += size * meta[i]
}
console.log(res)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56611946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档