如何检查对象中的字符串是否在数组中是唯一的

Don*_*uwe 2 javascript arrays string comparison lodash

我有一个数组字符串:

var arr = [
    {str: 'abc'},
    {str: 'def'},
    {str: 'abc'},
    {str: 'ghi'},
    {str: 'abc'},
    {str: 'def'},
];
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种向对象添加布尔属性的智能方法,无论它是唯一的:uniquestr

var arr = [
    {str: 'abc', unique: false},
    {str: 'def', unique: false},
    {str: 'abc', unique: false},
    {str: 'ghi', unique: true},
    {str: 'abc', unique: false},
    {str: 'def', unique: false},
];
Run Code Online (Sandbox Code Playgroud)

我的解决方案包含三个_.each()循环,它看起来很糟糕......使用lodash的解决方案更受欢迎.

Mag*_*gus 8

您可以使用where过滤对象.然后,您可以知道您的字符串在对象中是否唯一.

_.each(arr, function(value, key) {
    arr[key] = {
        str : value.str,
        unique : _.where(arr, { str : value.str }).length == 1 ? true : false
    };
});
Run Code Online (Sandbox Code Playgroud)

也许更好的版本与map:

arr = _.map(arr, function(value) {
    return {
        str : value.str,
        unique : _.where(arr, { str : value.str }).length == 1 ? true : false
    };
});
Run Code Online (Sandbox Code Playgroud)