javascript - 将 JS 数组转换为单个对象

标签 javascript arrays object

我是 JS 的新手,无法通过搜索找到答案,所以我希望有人能帮助我。

我有一个 csv,我将其解析为数组数组。 看起来像这样

["Teacher 1", "Student 1", "Student 2", "Student 3", "Student 4", "Student 5"]
["Teacher 2", "Student 1", "Student 2", "Student 3", "Student 4", "Student 5"]

等等..

我想把它分解成这样的对象和数组

Var Teacher1 = new Teacher("Teacher1");
Teacher1.students = [Student1, Student2, Student3, Student4, Student5];

如果有人能引导我朝着正确的方向前进,我将不胜感激!

最佳答案

一般来说,您应该更喜欢使用对象和数组文字而不是"new"语法。例如,原始数组所在的行:

// map takes an array and returns and modifies each object, passed
// as the parameter d
rows.map(function(d){
    return {
        teacher: d[0],
        students: d.slice(1)
    };

});

那应该返回表单的对象列表

[
  {teacher: 'Teacher 1', students: ['Student 1', 'Student 2',...']},
]

关于 map 的更多信息.

这里是一个example .


编辑: 在您给出的示例中,您正在使用构造函数来创建具有"new"语法的对象。你可以像这样创建一个构造函数

function Teacher(name){
  this.name = name;
}

这样当你打电话的时候

var teacher = new Teacher('teacher 1')

您创建了一个具有名称属性的教师对象。由于这只是一个对象,您可以向其添加任何您想要的属性,例如 .students。

不过,你也可以通过声明一个对象字面量来获得相同的结果,即

var teacher = {};  //an empty object

然后为其分配属性

teacher.name = 'teacher 1';
teacher.students = ['student 1', ...]

或者你甚至可以一步完成

var teacher = {
  name: 'teacher 1',
  students: ['student 1',' student 2',...']
};

最后你可以创建一个函数,它接受一个数组并返回这个教师对象,

function example(item) {
  // where item is an array
  return {
     name: item[0],
     students: item.slice(1)  // takes all the array elements after 0
  };
}

然后使用 .map 将该函数映射到数组中的每个元素,您将获得一个教师对象数组

如果你想使用构造函数,你可以使用

function Teacher(name, students) {
  this.name = name;
  this.students = students;
}

然后代替 map 内部的现有功能,使用

rows.map(function(d){
  return new Teacher(d[0], d.slice(1));
});

但是结果将与对象字面量表示法相同

关于javascript - 将 JS 数组转换为单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33021940/

相关文章:

java - 二维数组 - 计算邻居算法时出错(康威的生命游戏)

java - 使用简单的json,将包含json数组的json对象转换为字符串数组(在java中)

javascript - 将数组插入 JSON 对象、Javascript

javascript - 如何在没有用户交互的情况下获取 instagram access_token(新 api)?

javascript - 如何在选项卡切换之间保持 Ext.Panel 滚动条位置

javascript - 为什么 jQuery Mobile 会自动更改主题?

javascript - 未捕获的语法错误 : Cannot use import statement outside a module using reactjs CDN Links

c# - 用数组初始化 List<>

javascript - 递归列出 JSON 中的所有对象属性路径

javascript - 从 list.js 获取 {id :3, name :"John"} 的值