【问题标题】:How to create an array in for loop in javascript?如何在javascript中的for循环中创建一个数组?
【发布时间】:2018-02-18 05:39:32
【问题描述】:

我来自 Python,所以试图弄清楚 Js 中的基本内容。

我有以下几点:

{
  name: 'Jobs ',
  path: '/plat/jobs',
  meta: {
    label: 'jobs',
    link: 'jobs/Basic.vue'
  },

我想要的是使用 for 循环(包括括号)为列表中的每个元素创建这个块

在 python 中,这将类似于

for i in items:
    {
      name: i.name,
      path: i.path,
      meta: {
        label: i.label,
        link: i.link
     }

如何在 js 中做到这一点?这里的对象类型是什么?它只是一个 javascript 字典吗?

  children: [
    let new_items = items.map(i => ({
      name: i.name,
      path: i.path,
      meta: {
        label: i.label,
        link: i.link
      }
    }));

    console.log(new_items);
      component: lazyLoading('android/Basic')
    }
  ]
}

我认为这行不通,因为我需要在子项下列出的每本字典。

【问题讨论】:

  • 您可能想要定义您的列表(例如,items),描述您的输入和预期输出。你称它为list,是不是array
  • 它被称为javascript对象表示法。否则称为 JSON。
  • 您需要举例说明您的数据结构是什么以及您的期望。
  • 您可以将children 分配给一个函数,但您似乎可能希望在对象之外运行代码。同样,您必须提供有关数据结构和所需内容的更多信息。这是不完整的

标签: javascript vue.js


【解决方案1】:

包括一个对对象数组进行操作的示例,返回一个新的对象数组。一个对象在 JavaScript 中是重载的,但在这种情况下,它在其他语言中是哈希、对象或字典的同义词(取决于应用程序)。

let items = [{
  name: 'foo',
  path: 'foopath',
  label: 'foolabel',
  link: 'foolink'
}, {
  name: 'bar',
  path: 'barpath',
  label: 'barlabel',
  link: 'barlink'
}];

let new_items = items.map(i => ({
  name: i.name,
  path: i.path,
  meta: {
    label: i.label,
    link: i.link
  }
}));

console.log(new_items);

也就是说,不需要新数组,因为可以直接编辑对象:

let items = [{
  name: 'foo',
  path: 'foopath',
  label: 'foolabel',
  link: 'foolink'
}, {
  name: 'bar',
  path: 'barpath',
  label: 'barlabel',
  link: 'barlink'
}];

items.forEach(i => {
  i.meta = {label:i.label, link:i.link};
  delete i.label;
  delete i.link;
});

console.log(items);

【讨论】:

  • 在我更新的示例中,我想我正在尝试将每个字典附加到子列表中?
  • 每个对象都需要在孩子之下
【解决方案2】:

我会使用 list.map 函数

items.map(i => {
    return {
        name: i.name,
        path: i.path,
        meta: {
            label: i.label,
            link: i.link
        }
     }))

这将返回指定的新项目列表

注意:这可以通过隐式返回进一步简化

items.map(i => ({
    name: i.name,
    path: i.path,
    meta: {
        label: i.label,
        link: i.link
    }
}))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2012-09-11
    • 2021-09-11
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多