我来自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')
}
]
}
我不认为这会有效,因为我需要列在儿童下面的每本字典。
答案 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
}
}))