Javascript 获取所有阵列-把手的唯一项目

Javascript 获取所有阵列-把手的唯一项目,javascript,json,handlebars.js,Javascript,Json,Handlebars.js,用我使用的代码,我只成功了一部分。 当所有数组的值都相等时,是否可以有单个项?(即“citta”:“罗姆人”) 现在我有以下结果:-罗马-那不勒斯-罗马-罗马 我想得到以下结果:-罗马-那不勒斯。我不想重复“罗马” 有人能帮我吗?多谢各位 { "test": [ { "33": [ { "name": "Antonio", "citta": "Roma", "orari": "2020-

用我使用的代码,我只成功了一部分。 当所有数组的值都相等时,是否可以有单个项?(即“citta”:“罗姆人”)

现在我有以下结果:-罗马-那不勒斯-罗马-罗马

我想得到以下结果:-罗马-那不勒斯。我不想重复“罗马”

有人能帮我吗?多谢各位

{
    "test": [
    {
        "33": [
        {
          "name": "Antonio",
          "citta": "Roma",
          "orari":  "2020-01-11T10:50:00.000+01:00"
      },
            {
          "name": "Federico",
          "citta": "Roma"

      }
      ]
    },
      {
        "34": [
        {
           "name": "Antonio",
          "citta": "Napoli"

      }
      ]
    },
     { "36": [
        {
           "name": "Antonio",
          "citta": "Roma"

      }
      ]
    }
  ]
}

{{{{{35;每个测试}}
    {{{{{35;每个这个}}{{{{{35;每个测试}}-{{citta}{{{/eachUnique}{{/each}{/ul>{/each}
    var seasures\u data\u url=“working data file.json”; $(文档).ready(函数(){ $.getJSON(季节数据url、, 功能(数据){ var mysource=$('#sourceTemplate').html(); var mytemplate=handlebar.compile(mysource); var myresult=mytemplate(数据) $('#resultPlaceholder').html(myresult); }); }); 把手。注册表帮助器('eachUnique',函数(数组,选项){ //这用于查找 var dupCheck={}; //模板缓冲区 var缓冲区=“”; 对于(var i=0;i
有几种方法可以实现独特的阵列

香草JavaScript

通过香草JavaScript,您可以使用

var foo=new Set();
test.forEach(item=>foo.add(item.citta));
返回数组.from(foo);
更好的做法是将非唯一阵列本身传递给集合承包商,它将创建该阵列的唯一集合

  return Array.from(new Set(test.map(item => item.citta)));
使用Lodash.js

js有一个函数。 我还建议使用和

返回链(测试)
.map(item=>item.citta)
.uniq()
.value();
您的示例的解决方案是:

您基本上希望迭代对象,并从中创建一个
,以包含每个基础对象的
citta
, 然后,您需要将此
集合
生成的
数组
添加到您的
上下文
,并更改您的
#每个
以使用该数组

下面是一个代码修改,它使用您在注释中提供的示例解决了这个问题


{{{each cittas}}
  • {{{this}}
    • {/each}
      $(文档).ready(函数(){ 变量上下文={ “测试”:[ { "33": [ { “姓名”:“安东尼奥”, “西塔”:“罗姆人”, “orari”:“2020-01-11T10:50:00.000+01:00” }, { “姓名”:“费德里科”, “西塔”:“罗姆人”, “orari”:“2020-01-11T12:50:00.000+01:00” } ] }, { "34": [ { “姓名”:“安东尼奥”, “citta”:“那不勒斯”, “orari”:“2020-01-11T10:50:00.000+01:00” } ] }, { "35": [ { “姓名”:“安东尼奥”, “西塔”:“罗姆人”, “orari”:“2020-01-11T10:50:00.000+01:00” } ] }, { "36": [ { “姓名”:“安东尼奥”, “西塔”:“罗姆人”, “orari”:“2020-01-11T10:50:00.000+01:00” } ] } ] }; context.cittas=Array.from(context.test.reduce)((foo,item)=>{ Object.values(item.forEach)(a=>{ a、 forEach(b=>{ foo.add(b.citta); }); }); 返回foo; },新集合()) var source=$(“#sourceTemplate”).html(); var template=handlebar.compile(源代码); var html=模板(上下文); $(“#resultPlaceholder”).html(html); }); 把手。注册表帮助器('eachUnique',函数(数组,选项){ //这用于查找 var dupCheck={}; //模板缓冲区 var缓冲区=“”; 对于(var i=0;i
有几种方法可以实现独特的阵列

香草JavaScript

通过香草JavaScript,您可以使用

var foo=new Set();
test.forEach(item=>foo.add(item.citta));
返回数组.from(foo);
更好的做法是将非唯一阵列本身传递给集合承包商,它将创建该阵列的唯一集合

  return Array.from(new Set(test.map(item => item.citta)));
使用Lodash.js

js有一个函数。 我还建议使用和

返回链(测试)
.map(item=>item.citta)
.uniq()
.value();
您的示例的解决方案是:

您基本上希望迭代对象,并从中创建一个
,以包含每个基础对象的
citta
, 然后,您需要将此
集合
生成的
数组
添加到您的
上下文
,并更改您的
#每个
以使用该数组

下面是一个代码修改,它使用您在注释中提供的示例解决了这个问题


{{{each cittas}}
  • {{{this}}
    • {/each}
      $(文档).ready(函数(){ 变量上下文={ “测试”:[ { "33": [ { “姓名”:“安东尼奥”, “西塔”:“罗姆人”, “orari”:“2020-01-11T10:50:00.000+01:00” }, { “姓名”:“费德里科”, “西塔”:“罗姆人”, “orari”:“2020-01-11T12:50:00.000+01:00” } ] }, { "34": [ { “姓名”:“安东尼奥”,