JavaScript 创建对象数组

JavaScript make Object Array

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

它returns数据由一个对象数组组成。使用 console.log() 它看起来像这样:

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

id     meaning_id     word

1         1           a

2         1           b

3         2           c

4         2           d

5         2           e

6         3           f

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

我想到了一个数组,在一个索引中包含所有具有相同meaning_id的单词。 例如 synonyms1 应该包含 words/objects 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);
    }

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

亲切的问候, Force0234

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

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
}