是否可以通过数组中的循环数据在 javascript 中创建 Object?
is it possible to create an Object in javascript from looping data in array?
正如标题所说。我想从下面数组中的数据创建一个新的 object:
object 的名字是名字和姓氏。
//this is the input
arrayToObject([['Christ', 'Evans', 'Male'], ['Robert', 'Downey', 'Male']]);
//this is output that i want
// 1. Christ Evans:
// { firstName: 'Christ',
// lastName: 'Evans',
// gender: 'Male',
// 2. Robert Downey:
// { firstName: 'Robert',
// lastName: 'Downey',
// gender: 'Male',
// this is code that i write
function arrayToObject(arr) {
let ObjName=""
for (let i = 0; i<arr.length;i++){
let firstName=arr[i][0]
let lastName=arr[i][1]
let ObjName=firstName.concat(' ',lastName)
let gender=arr[1][2]
ObjName = { // idk how to make the object.
'firstName':firstName,
'lastName':lastName,
'gender':gender,
}
}
}
我在可以声明 object 的部分苦苦挣扎。
我假设您想要一个具有以下结构的对象数组:
[
{
"firstName": "Christ",
"lastName": "Evans",
"gender": "Male"
},
{
"firstName": "Robert",
"lastName": "Downey",
"gender": "Male"
}
]
如果是这样,你可以简单地使用Array.prototype.map
,在回调中你只需使用数组解构将二级数组解包为firstName
、lastName
和gender
:
function arrayToObject(arr) {
return arr.map((entry) => {
const [firstName, lastName, gender] = entry;
return {
firstName,
lastName,
gender
};
});
}
const a = arrayToObject([['Christ', 'Evans', 'Male'], ['Robert', 'Downey', 'Male']]);
console.log(a);
您可以采用 Object.fromEntries
的嵌套方法,并使用键数组映射属性。
var data = [['Christ', 'Evans', 'Male'], ['Robert', 'Downey', 'Male']],
keys = ['firstName', 'lastName', 'gender'],
result = Object.fromEntries(data.map(a => [
a.slice(0, 2).join(' '),
Object.fromEntries(keys.map((k, i) => [k, a[i]]))
]));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
正如标题所说。我想从下面数组中的数据创建一个新的 object: object 的名字是名字和姓氏。
//this is the input
arrayToObject([['Christ', 'Evans', 'Male'], ['Robert', 'Downey', 'Male']]);
//this is output that i want
// 1. Christ Evans:
// { firstName: 'Christ',
// lastName: 'Evans',
// gender: 'Male',
// 2. Robert Downey:
// { firstName: 'Robert',
// lastName: 'Downey',
// gender: 'Male',
// this is code that i write
function arrayToObject(arr) {
let ObjName=""
for (let i = 0; i<arr.length;i++){
let firstName=arr[i][0]
let lastName=arr[i][1]
let ObjName=firstName.concat(' ',lastName)
let gender=arr[1][2]
ObjName = { // idk how to make the object.
'firstName':firstName,
'lastName':lastName,
'gender':gender,
}
}
}
我在可以声明 object 的部分苦苦挣扎。
我假设您想要一个具有以下结构的对象数组:
[
{
"firstName": "Christ",
"lastName": "Evans",
"gender": "Male"
},
{
"firstName": "Robert",
"lastName": "Downey",
"gender": "Male"
}
]
如果是这样,你可以简单地使用Array.prototype.map
,在回调中你只需使用数组解构将二级数组解包为firstName
、lastName
和gender
:
function arrayToObject(arr) {
return arr.map((entry) => {
const [firstName, lastName, gender] = entry;
return {
firstName,
lastName,
gender
};
});
}
const a = arrayToObject([['Christ', 'Evans', 'Male'], ['Robert', 'Downey', 'Male']]);
console.log(a);
您可以采用 Object.fromEntries
的嵌套方法,并使用键数组映射属性。
var data = [['Christ', 'Evans', 'Male'], ['Robert', 'Downey', 'Male']],
keys = ['firstName', 'lastName', 'gender'],
result = Object.fromEntries(data.map(a => [
a.slice(0, 2).join(' '),
Object.fromEntries(keys.map((k, i) => [k, a[i]]))
]));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }