如何在javascript中为for循环创建数组?

时间:2018-02-18 05:39:33

标签: javascript vue.js

我来自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')
    }
  ]
}

我不认为这会有效,因为我需要列在儿童下面的每本字典。

2 个答案:

答案 0 :(得分:3)

包含一个操作对象数组的示例,返回一个新的对象数组。一个对象在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);




答案 1 :(得分:1)

我会使用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
    }
}))