我正在寻找一种方法,使用lodash / underscore(或普通JS,如果不存在),只有我才能获取如下的给定对象。
animals: {
{
type: 'duck',
name: 'quack',
},
{
type: 'duck',
name: 'quieck',
},
{
type: 'dog',
name: 'bark',
},
},
这个对象例如包含3种不同的动物,但其中有两种是相同的类型。
最终结果是能够使用诸如for循环之类的控制结构来遍历每个动物类型,这样我就可以处理每种类型只有一个实例的东西。
这是因为我正在创建一个列表。
此列表与以下内容类似
duck
name is quack
name is quick
dog
name is bark
但我想用控制结构来做这件事,而不是简单地在每个名字中输出和硬编码,因为这个列表会变得非常广泛和冗长。
答案 0 :(得分:1)
我会使用uniq函数。
$('#sel2').change(function(e) {
$("#Group").html($('#Group').sort(function(x, y) {
return $(x).val() == $("#sel2").val() ? 1 : -1;
}));
$("#Group").get(0).selectedIndex = 0;
e.preventDefault();
});
答案 1 :(得分:0)
假设animals
不是语法错误,而是数组:如果您不只是想过滤唯一类型而是为输出创建结构,那么您可以使用对象:
var kv = {};
animals.forEach(function(a) {
if(kv[a.type]) {
kv[a.type].push(a.name);
} else {
kv[a.type] = [];
}
}
稍后,您可以迭代Object.keys(kv)
来打印您的键/值
答案 2 :(得分:0)
ServiceWorkerRegistration.update也许?
var animals = [
{
type: 'duck',
name: 'quack',
},
{
type: 'duck',
name: 'quieck',
},
{
type: 'dog',
name: 'bark',
},
];
var grouped = _.groupBy(animals, 'type');
document.write('<pre>' + JSON.stringify(grouped, null, 3) + '</pre>');
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.6.1/lodash.min.js"></script>
&#13;