【问题标题】:JavaScript make Object ArrayJavaScript 制作对象数组
【发布时间】:2015-05-19 18:54:18
【问题描述】:

我有一个由 AngularJs Ajax 执行的 MySQL 查询。

它通过对象数组返回数据。使用 console.log() 它看起来像这样:

我从中获取数据的表如下所示:

id     meaning_id     word

1         1           a

2         1           b

3         2           c

4         2           d

5         2           e

6         3           f

所以如你所见,有些词和其他词具有相同的含义_id,我想将这些词收集到一个对象中。

我想到了一个数组,它在一个索引中包含所有具有相同含义_id 的单词。 例如 synonyms1 应该包含单词/对象 a 和 b。

我试过了:

$scope.prepareSynonymsArray = function()
    {
        for(var key in $scope.responseData)
        {
            var obj = $scope.responseData[key];

            if(typeof $scope.synonyms[obj.meaning] == "undefined")
            {
                $scope.synonyms[obj.meaning] = obj;
            }
            else{
                $scope.synonyms[obj.meaning].push(obj);
            }
        }

        console.log($scope.synonyms);
    }

但是推送功能似乎有问题。 有没有更好的方法来实现这一目标?请给我一些建议。

亲切的问候, 力0234

【问题讨论】:

    标签: javascript mysql arrays angularjs object


    【解决方案1】:

    如果意图是 $scope.synonyms[obj.meaning] 应该是一个数组(假设您稍后尝试将 .push 元素放到它上面),那么在 undefined 的情况下,您必须将其设置为 [ obj ],而不仅仅是 @987654325 @:

    if (typeof $scope.synonyms[obj.meaning] == "undefined") {
        $scope.synonyms[obj.meaning] = [ obj ];   // initial array with one element
    } else {
        $scope.synonyms[obj.meaning].push(obj);   // additional elements
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多