javascript - 从 javascript 对象键创建对象数组

标签 javascript jquery handsontable

我正在尝试在可操作的电子表格上执行列映射,并且我想动态加载电子表格并在每行前面添加一个复选框。基于我的研究,包括 How to add properties dynamically to each object in an javascript array ,似乎最好的方法是为可操作的“列”属性创建一个对象数组。您可以在 http://jsfiddle.net/kc11/o4d6gr6n/ 看到这一点.

所以我需要做的是创建:

 [
            {data: "check", type: 'checkbox'},
            {data: "year", type: 'text'},
            {data: "car", type: 'text'},
            {data: "available", type: 'text'},
            {data: "comesInBlack", type: 'text'},
          ]

来自:

 function getCarData() {
    return [
      {car: "Mercedes A 160", year: 2006, available: true, comesInBlack: 'yes'},
      {car: "Citroen C4 Coupe", year: 2008, available: false, comesInBlack: 'yes'},
      {car: "Audi A4 Avant", year: 2011, available: true, comesInBlack: 'no'},
      {car: "Opel Astra", year: 2004, available: false, comesInBlack: 'yes'},
      {car: "BMW 320i Coupe", year: 2011, available: false, comesInBlack: 'no'}
    ];
  }

我首先获取列的键并在“检查”列前面添加:

    var keys = $.map(getCarData()[0], function(element,key) { return key; }); 
keys.unshift("check");

但是由于我有限的 JS 知识,我不知道如何完成剩下的工作。谁能告诉我下一步该怎么做?

最佳答案

可以循环数组并添加属性,执行以下操作:

var myData = getCarData();
$.each(myData, function(){
    /* add new property "checked" */
    this.checked = false
});

/* or */
 var myData = $.map(getCarData(), function(row){
      row.checked = false;
      return row;
 });
/* returns rows like 
 {checked:false, car: "Mercedes A 160", year: 2006, available:....}*/

然后使用文档中的复选框模板列定义

var example2 = document.getElementById('example2');
var hot2 = new Handsontable(example2,{
  data:myData,
  columns: [
      {
      data: "checked",
      type: "checkbox",
      checkedTemplate: true,
      uncheckedTemplate: false
    },
     {data: "year", type: 'text'},
     {data: "car", type: 'text'},
     {data: "available", type: 'text'},
     {data: "comesInBlack", type: 'text'},
  ]
});

关于javascript - 从 javascript 对象键创建对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27825162/

相关文章:

javascript - 如何合并和求和 MongoDB 的结果

javascript - fullPage.js 一页滚动 - 在最后一节之后无法滚动到页脚

javascript - 将 href 缓和到网站的 div/部分

javascript - 如何在 jQuery 中使用 handsontable 设置特定单元格的属性?

具有可变时区的 JavaScript 时钟

JavaScript 两个日期之间的差异错误为一小时

javascript - handsontable - 加载后在所有单元上模拟 "pressing enter"

javascript - 获取选定行的单元格值

javascript - 我的程序不断收到此错误 : VM178 SortLib. js:71 Uncaught TypeError: 无法读取未定义的属性 'length'

jquery - 使用 inArray() 检查坐标是否在 jQuery 数组中