Javascript对象:动态创建属性和属性名称
Javascript Objects: Dynamically create properties and property names
我正在尝试在所有具有动态属性名称和属性的对象中动态创建对象。这是一个示例:
作业:
| name | job | building |
-----------------------------
| adam | mop | school |
| adam | teach | school |
| eve | cook | kitchen |
| eve | mop | house |
数据名称:
| name |
---------
| adam |
| eve |
期望结果:
names = {
adam: {
school: ["mop", "teach"]
},
eve: {
kitchen: ["cook"],
house: ["mop"]
}
}
该脚本用于谷歌的应用程序脚本,因此不能使用eval()等函数。这是我当前的代码:
namesSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('dataNames');
namesValues = namesSheet.getDataRange().getValues();
jobsSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('jobs');
jobsValues = rolesSheet.getDataRange().getValues();
jobsNumRows = rolesRange.getNumRows();
var names = {};
for (item in namesValues) {
//create new entry in names array with key name
var name = namesValues[item];
names[name] = {}; //<-- so far, so good
//cycle through jobs sheet and find all buildings and jobs tied to name
for(i=1;i<jobsNumRows;i++){
var jobsName = jobsValues[i][0];
if(jobsName == name){
var buildingName = jobsValues[i][2];
var jobDesc = jobsValues[i][1];
//Check if names.name already has a building property
if(!names.name[buildingName]){
names.name[buildingName] = []; //<-- doesn't work
}
names.name[buildingName].push(jobDesc); <--probably wouldn't work...?
}
}
}
}
我该如何设置?我已经研究了所有关于在对象中创建动态命名属性的SO问题。这与我们两次这样做略有不同:动态命名属性的动态命名属性。当然,除非这没什么不同?
非常感谢!
尝试:
if(!names[name][buildingName]){
names[name][buildingName] = [];
}
names[name][buildingName].push(jobDesc);
使用"."运算符需要变量的实际值,因此不能执行以下操作:
var x = "variable";
var obj = {};
obj.x = {};
这意味着obj
将有一个名为x
的属性,它与之前定义的变量无关。
相反,你应该使用这个:
var obj = {}
obj[x] = {}
我认为这些行应该是:
//Check if names.name already has a building property
if(!names[name][buildingName]){
names[name][buildingName] = []; //<-- doesn't work
}
names[name][buildingName].push(jobDesc); <--probably wouldn't work...?
相关文章:
- 使用导航属性创建Kendo UI网格模型的问题
- Reactjs基于jsx中的属性创建条件组件
- JQuery 从类选择器上的数据属性创建一个数组
- 基于对象属性创建数组
- 融合图表 - 如何获取使用链接属性创建的更新融合图表 json
- 从 ASP.NET Web 窗体中的服务器端属性创建 JavaScript 条件
- 如何从子对象属性创建新数组
- 按属性创建唯一对象的数组
- 使用DOM中定义的html5数据属性创建新元素
- 使用JavaScript中的过滤元素属性创建对象
- 使用现有对象属性创建javascript对象
- 如何为Object.define()定义的属性创建唯一的toJSON方法
- 使用innerHTML属性创建页面加载计数器
- 根据指定的数据属性创建一个包含值和文本的select下拉选项
- 使用其他对象的属性创建对象
- 作为类的函数-为私有属性创建getter和setter
- 当鼠标悬停在由相同数据条目的不同属性创建的圆形元素时,我如何显示/隐藏文本元素?
- jQuery用动态ID和定义的CSS属性创建DIV(定义该DIV的外观和位置)
- 如何在ECMAScript 5: Object中配置属性.创建或定义对象属性
- 附加一个作为对象属性创建的元素