对象长度为javascript的数组为0

时间:2016-10-19 07:33:34

标签: javascript arrays

我实现了这个答案的代码:javascript group by in array

我稍微更改了代码,因此数组中有更多的产品详细信息:

   var mapByShop = function(arr, groupName) {
        return arr.reduce(function(result, item) {
        result[item[groupName]] = result[item[groupName]] || [];
        result[item[groupName]][item["productId"]] = item;
            return result;
        }, {});
    };
    console.log("Response", response.data);

    $scope.productList = mapByShop(response.data, "shopName");
    console.log("productList", $scope.productList);

代码工作正常,它创建一个带有商店名称的数组,其中包含带有文章对象的对象。例如,数组看起来像:

Shopname 1:Array[0]
    57ab0360741496001e37586c:Object
        image:"http://pathtoimage.nl/image.jpg"
        name:"Product Name"
        price:32.23
        productId:"57ab0360741496001e37586c"
        productNumber:"ProductNumer 123"
        quantity:1
        shopId:"56699123a9c7a38740a31251"
        shopName:"Shopname 1"
    57ab0360741496001e375867:Object
        {same properties as object above}

Shopname 2:Array[0]
    57bc15ad732b2de02145fe8e:Object
        {same properties as object above}
    57bc15ad732b2de02145fe8f:Object
        {same properties as object above}
    57bc15ad732b2de02145fe90:Object
        {same properties as object above}
    57d157d10b90631c31466329:Object
        {same properties as object above}
    57d158fe0b90631c31466331:Object
        {same properties as object above}

正如您所看到的,在Shopnames之后,有一个符号(从Chrome中的控制台复制),其中显示Array[0]。我希望用角度ng-repeat显示此数组的内容,但这也不起作用。

我该如何解决这个问题?我对javascript很新,所以一个例子就可以了。

1 个答案:

答案 0 :(得分:0)

使用{}。

解决了这个问题
var mapByShop = function(arr, groupName) {
                    return arr.reduce(function(result, item) {
                    result[item[groupName]] = result[item[groupName]] || {};
                    result[item[groupName]][item["productId"]] = item;
                        return result;
                    }, {});
            };