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