JavaScript - 构建复杂数据的对象

标签 javascript angularjs

我正在编写一个函数来“内存表中的数据”。函数签名(在 AngularJS 中)是

$scope.memoryTable = {};
$scope.memorize = function(name, category, value) {
     if (typeof name !== 'undefined' && typeof category !== 'undefined' && typeof value !== 'undefined') {

          // build data to $scope.memoryTable

     }
}

每次 View 评估表中的单元格数据时都会调用此memorise函数,并将该值添加到$scope.memoryTable

现在,我想要实现的是按照以下结构构建一个数组:

{
  "$name": {
    "$category": "$value"
  }
}

例如:

> memorize("David", "animal", "cat");
> memorize("David", "book", "fiction");
> memorize("Thomas", "animal", "dog");

会产生

console.log(JSON.stringify($scope.memoryTable));

{
  "David": {
    "animal": "cat",
    "book": "fiction"
  },
  "Thomas": {
    "animal": "dog",
  }
}

我应该如何编写代码来构建该数据表?

最佳答案

所以,你没有使用数组,你实际上使用的是普通的旧 JavaScript 对象。

$scope.memoryTable = {};
$scope.memorize = function(name, category, value) {
    if (typeof name !== 'undefined' &&
            typeof category !== 'undefined' &&
            typeof value !== 'undefined') {
        // build data to $scope.memoryTable
        // First, make sure there is an entry for name.
        $scope.memoryTable[name] = $scope.memoryTable[name] || {};
        // Then, set the value for category under that name.
        $scope.memoryTable[name][category] = value;
    }
}

关于JavaScript - 构建复杂数据的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33665915/

相关文章:

javascript - 如何使用react-native获取父 block 高度?

javascript - 运行任何报告时 MS CRM 2011 汇总 12 "Syntax error"

c# - ASP.NET Web API 方法模型 null

angularjs - 我可以在 Angular 服务中直接在 templateUrl 上而不是在原始 HTML 或原始 angular.element 上使用 $compile 吗?

dynamic - 在页面内动态加载 AngularJS 模板

javascript获取子div的滚动

javascript - javascript 中闭包的混淆

javascript - 关于克隆/复制TR的一些问题

javascript - 将 javascript 变量转换为 C# 变量

javascript - Gulp-Uglify - 无法缩小 Javascript Angular 1.6.8