javascript - Underscore.js 基于属性名称数组的唯一选择

标签 javascript object underscore.js arrays

以下 JavaScript 旨在获取对象数组,搜索每个对象的属性(由属性名称数组指定),并使用 underscore.js 从数组中选择在该方面唯一的项目。然而,由于某种原因,它返回一个仅包含单个对象的数组:[{type: {sub: 'a'}}]

有人知道为什么吗? (如果您关心的话,请使用 Chrome 版本 34.0.1847.131 m。)

谢谢。

var objectID = ["type", "sub"];

var getFromObjectID = function(obj) {
    var result = obj;
    for(var i = 0; i < objectID.length; i++) {
        if(!result.hasOwnProperty[objectID[i]])
            return null;
        result = result[objectID[i]];
    }
    return result;
}

var array = [
    {type: {sub: "a"}},
    {type: {sub: "a"}},
    {type: {sub: "b"}},
    {type: {sub: "c"}},
    {type: {sub: "b"}},
    {type: {sub: "a"}},
    {type: {sub: "b"}},
    {type: {sub: "c"}},
    {type: {sub: "a"}},
    {type: {sub: "b"}},
    {type: {sub: "b"}},
];

var uniqueArray = _.chain(array)
        .uniq(array, function(item, key) {
            return getFromObjectID(item);
        })
        .value();
console.log(uniqueArray);

最佳答案

打错字了!在进行 hasOwnProperty 检查时,您使用方括号而不是圆括号。

if(!result.hasOwnProperty(objectID[i]))

此外,在调用 _uniq 时您不必添加数组,因为您已经链接了它:

 _.chain(array)
        .uniq(function(item, key) {
            return getFromObjectID(item);
        })

关于javascript - Underscore.js 基于属性名称数组的唯一选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23584813/

相关文章:

javascript - 使用 TinyMCE 在图像中添加内联 CSS

javascript - 帮助解决错误 SCRIPT5007 : Unable to set value of the property 'onclick'

javascript - 将函数添加到 anchor 标记

javascript - 如何将 JSON 数据数组对象转换为自定义字符串?

javascript - 如何重新创建 Underscore.js _.reduce 方法?

javascript - 我应该如何衡量 JS 的单元测试覆盖率?我不能满足于 jscoverage

java - 从类的方法代码中调用方法或在类的实例上调用方法有区别吗?

javascript - 如何在 Javascript 中获取动态对象属性?

javascript - underscore.js 和 backbone.js 的外部 html 模板

javascript - 合并不同长度的对象