te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Why isn't lodash's _.unique returning unique objects when I pluck a field that is an object? - Stac
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Why isn't lodash's _.unique returning unique objects when I pluck a field that is an object? - Stac

programmeradmin2浏览0评论

I'm using lodash's _.unique and it's not working as expected. I'm doing this:

uniqueByFocusIndex = _.unique(clickables, false, "focusIndex");

And as you can see in the image (look at the right), it's returning two elements with the same values for their focusIndexes. I'd expect this to return one of the two, not both. Is it because _.unique only works on primitives and not objects?

Click to expand:

I'm using lodash's _.unique and it's not working as expected. I'm doing this:

uniqueByFocusIndex = _.unique(clickables, false, "focusIndex");

And as you can see in the image (look at the right), it's returning two elements with the same values for their focusIndexes. I'd expect this to return one of the two, not both. Is it because _.unique only works on primitives and not objects?

Click to expand:

Share Improve this question edited Jul 6, 2014 at 3:28 Daniel Kaplan asked Jul 5, 2014 at 23:00 Daniel KaplanDaniel Kaplan 67.4k57 gold badges268 silver badges399 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 9

_.uniqWith is what you might need so that you can do parison using _.isEqual

_.uniqWith(clickables, _.isEqual)

It is suggested in the docs

It doesn't work because paring objects is done by reference and returns false even if the objects' contents are the same.

Using a string for the callback will check those values using the pluck callback style, but parison of those objects you have under that key will always be false.

I tried to find a way to do this with some other callback, but I think you would be better off just writing your own uniq function that fits your purposes.

apparently for lodash version 4.x.x _.uniq works with primitives, If you want to work with array of json's the use _.uniqBy

uniqueByFocusIndex = _.uniqBy(clickables,"focusIndex");

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论