以下代码返回data
数组中唯一值的数组。但是,如果在value1:value2
找到唯一性,我想要实现的是返回true。从下面的代码中可以看出value1:value2:value3
和value1:value2:value4
符合此条件。用于生成此功能的 lodash 技术将是理想的,但是为了理解解决方案,我很乐意欢迎简单的“ol”javascript。
注意包含了jQuery和HTML来说明我的问题。我追求的javascript将在NodeJS上运行。
更新
运行以下代码的预期输出为true
,因为value1:value2:value3
和value1:value2:value4
之间存在匹配,即两个值中都存在value1:value2
。
更新
请参阅以下fiddle以获取我之后输出的示例。
更新
包含了我之后的输出示例。这是所需的功能,但我想要一种 lodash 方式来实现相同的结果。
$(document).ready(function() {
var data = [
'value1:value2:value3',
'value1:value2:value4',
'value5:value6:value7',
'value1:value2:value3'
];
var partialValueMatch = function(data) {
var lookup = _.uniqBy(data, function(str){
return str.substring(0, str.lastIndexOf(':'))
});
if(lookup.length < data.length) return true;
return false;
}
var $output = $('#output');
$output.html(partialValueMatch(data));
});
#output {
background: #fafafa;
border: 1px solid #d8d8d8;
padding: 5px 10px;
font-family: monospace;
border-radius: 2px;
color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-rc1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>
<div id="output"></div>
答案 0 :(得分:2)
您可以使用_.uniqBy
var data = [
'value1:value2:value3',
'value1:value2:value4',
'value5:value6:value7',
'value1:value2:value3'
];
var output = _.uniqBy(data,function(str){
return str.substring(0,str.lastIndexOf(':'))
});
console.log(output);
console.log('Is duplicates found:',output.length<data.length);
这将为您提供以下的uniq数据
//["value1:value2:value3", "value5:value6:value7"]
//Is duplicates found: true