gpt4 book ai didi

javascript - 将对象插入数组会导致 TypeError

转载 作者:行者123 更新时间:2023-12-02 14:24:52 26 4
gpt4 key购买 nike

我有我的values对象

values = {
'student': [{
'field': 'prefix',
'description': 'First name'
}, {
'field': 'suffix',
'description': 'Last name'
}, {
'field': 'student_email',
'description': 'Email address'
}],
'classes': [{
'field': 'course_code',
'description': 'Course code'
}]
}

我正在尝试获取“学生”和“类(class)”中的每个对象。一旦抓取,我就会尝试创建一个如下所示的新对象

{type:'student', field:'prefix', description:'First Name', key:'school'}

然后将该对象推送到新数组中。这就是我到目前为止所拥有的......

const array = [];

for(const v in values) {
array.concat(values[v].map(obj => {
console.log(obj); // grabs each obj successfully
array.push({
type: v,
description: obj.description,
field: obj.field,
key: 'school'
});
});
}

现在它抛出TypeError:无法读取未定义的属性“split”。我究竟做错了什么?我不能在 .map() 中创建新对象吗?

最佳答案

试试这个:

var values = {'student':[{'field':'prefix','description':'Firstname'},{'field':'suffix','description':'Lastname'},{'field':'student_email','description':'Emailaddress'}],'classes':[{'field':'course_code','description':'Coursecode'}]};

var out = Object.keys(values).map(function(type) {
return values[type].map(function(item) {
return {
name: type,
field: item.field,
descriptiom: item.description,
key: 'school'
};
});
}).reduce(function(l, r) {
return l.concat(r);
});

console.log(out);

<小时/>

或者,使用 ES6 arrow functions 会好得多:

var out = Object.keys(values).map((type) =>
values[type].map((item) => ({
name: type,
field: item.field,
descriptiom: item.description,
key: 'school'
})
}).reduce((l, r) => l.concat(r));

关于javascript - 将对象插入数组会导致 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38359352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com