0

以下のようなjsonオブジェクトがあります

[
    {
        "MerchantName": "Fashion and You",
        "BrandList": " Nike, Fila",
        "MerchantImage": "Fashion-You-medium.jpeg"
    },
    {
        "MerchantName": "Fashion and You",
        "BrandList": " Levis, Fasttrack, Fila",
        "MerchantImage": "Fashion-You-medium.jpeg"
    },
    {
        "MerchantName": "ebay",
        "BrandList": "Nokia,HTC,Samsung",
        "MerchantImage": "ebay.jpeg"
    },
    {
        "MerchantName": "amazon",
        "BrandList": "Apple,Dell,Samsung",
        "MerchantImage": "amazon.jpeg"
    },
    {
        "MerchantName": "amazon",
        "BrandList": " pepe jeans, peter england, red tape",
        "MerchantImage, Fila": "amazon.jpeg"
    }
]

以下のアンダースコアのように、Unique BrandList を使用して json オブジェクトを作成する必要があります。

[{"Nike"}, {"Fila"},{"Levis"}, {"Fasttrack"},{"Nokia"}, {"HTC"},{"Samsung"}, {"pepe jeans"}, {"peter england"},{"red tape"}]

上記の形式ではなく、以下のようなデータを取得できますか。ブランドは一意である必要があります。

 brands = [{brand:"Nike",status:false},  {brand:"Fila",status:false}, {brand:"Levis",status:false},{brand:"Fasttrack",status:false}, {brand:"Nokia",status:false},{brand:"HTC",status:false}, {brand:"Samsung",status:false} ]
4

2 に答える 2

0

前述のように、リストした json オブジェクトは無効です。一意のブランド名だけの配列を入力する方法を探している場合は、いくつかのアンダースコア関数を使用できます-

var arr = ...;

function trim(str){
    return str.replace(/^\s+|\s+$/g, "");
}

var mapped = _.map(_.pluck(arr, 'BrandList'), function(type){
  return _.map(type.split(","), function(brand){
    return trim(brand);
  });
});

var unique = _.uniq(_.flatten(mapped));
//outputs ["Nike", "Fila", "Levis", "Fasttrack", "Nokia", "HTC", "Samsung", "Apple", "Dell", "pepe jeans", "peter england", "red tape"]

これが単純なループよりも読みやすく、プロセスでいくつかの中間配列を作成するかどうかはわかりませんが、仕事は完了します。

于 2013-08-26T00:15:44.330 に答える