Javascript 如何从json对象中的元素生成json对象,该对象在下划线js中具有唯一值

Javascript 如何从json对象中的元素生成json对象,该对象在下划线js中具有唯一值,javascript,json,underscore.js,Javascript,Json,Underscore.js,我有一个json对象,如下所示 [ { "MerchantName": "Fashion and You", "BrandList": " Nike, Fila", "MerchantImage": "Fashion-You-medium.jpeg" }, { "MerchantName": "Fashion and You", "BrandList": " Levis, Fasttrack,

我有一个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"
    }
]
我需要创建一个json对象,该对象具有唯一的BrandList,如下下划线所示

[{"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} ]

源代码

如前所述,您列出的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"]

我不确定这比一个简单的循环更容易阅读,它在这个过程中创建了几个中间数组,但它完成了任务。

使用
\uuuu.pulk()
-在下划线文档中查找它。你的问题是真的关于JSON还是关于用JavaScript处理数据?还要注意的是,您想要的结果不是有效的JSON。当我使用u.pluck()时,我得到的数据是[“Nike,Fila”,“Levis,Fasttrack,Fila”],我不知道不循环的方法。@Nikhilledy:注意Nikolai使用了一个对象数组作为示例。如果将数据作为JSON获取,则必须首先解析它(
JSON.parse
),将代码应用于结果(对象数组),然后使用
JSON.stringify
将其转换回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"]