Jquery Javascript,从每个循环中获取唯一值或group by value.id

Jquery Javascript,从每个循环中获取唯一值或group by value.id,jquery,arrays,regex,foreach,underscore.js,Jquery,Arrays,Regex,Foreach,Underscore.js,我将值存储在localStorage中,并在从localStorage检索后将其转换为数组 我只想返回唯一的值,或者可能对它们进行分组,以避免重复。我在循环中使用了下划线 $.get_played_songs = function(){ if (localStorage.getItem("local_songs") === null) { recent_holder.html('Play some music');

我将值存储在localStorage中,并在从localStorage检索后将其转换为数组

我只想返回唯一的值,或者可能对它们进行分组,以避免重复。我在循环中使用了下划线

$.get_played_songs = function(){
                if (localStorage.getItem("local_songs") === null) { 
                    recent_holder.html('Play some music');
                    } else {
                    var StoredPlays = JSON.parse(localStorage.getItem('local_songs'));  
                    var i=0
                    _.each(StoredPlays, function(value, key){
                        recent_holder.append("<div class='recently_played_jams' data-recently_played_sid='"+value.sid+"'>"+value.title+"</div>");
                    });
                } 
            }
所以我想按sid分组。可能是一些正则表达式。

允许您传入一个函数,该函数确定在确定唯一性时要查看的内容,因此如果是
sid
使它们唯一:

StoredPlays = _.uniq(StoredPlays, function(play) { return play.sid; });
var StoredPlays=[
{标题:“Song1”,sid:“47”},
{标题:“Song1”,sid:“47”},
{标题:“Song1”,sid:“47”},
{标题:“歌曲12”,希德:“47”},
{标题:“Song2”,sid:“47”},
{标题:“Song2”,sid:“47”},
{标题:“Song2”,sid:“47”}
];
StoredPlays=uu.uniq(StoredPlays,函数(play){return play.sid;});
log(JSON.stringify(StoredPlays))


你所说的“团体”是什么意思?你被困在哪里?下划线有很多用于在数组上操作的实用程序。@T.J.Crowder,Ok group有点过时,类似于在sql中可以“按用户ID分组”,所有这些,我试图解释我不想返回重复的。你可以使用Lo-Das.js代替下划线.js()这通常要快得多,并且与您当前的code@Konstantin:但它是否像下划线那样对迭代器函数使用了不正确的术语“迭代器对象”;-)@T.J.Crowder,你把什么叫做“play”作为参数?它不应该是u.uniq(StoredPlays,function(value,key){console.log(value);})@Relm:
play
StoredPlays
中的每个条目。我添加了一些实例。我建议您通读文档。
StoredPlays = _.uniq(StoredPlays, function(play) { return play.sid; });