【发布时间】:2018-12-20 17:22:03
【问题描述】:
我正在从多个数据源中搜索一个字符串
下面是sn-p。用例:
搜索词:
sample hybrid预期行为:`它应该比较每个数据源中的每个单词,并在“searchResult['first']”和“searchResult['second']”中返回相应的对象。 即“样本”应在 2 个数据源中搜索并返回各自的对象,同样应该用于“混合”一词。
我做错了,得到一个空对象。
var dataSource1 = [{
"_id": "5968dd23fc13ae04d9000001",
"product_name": "sildenafil citrate",
"supplier": "Wisozk Inc",
"quantity": 261,
"unit_cost": "$10.47"
}, {
"_id": "5968dd23fc13ae04d9000002",
"product_name": "Mountain Juniperus ashei",
"supplier": "Keebler-Hilpert",
"quantity": 292,
"unit_cost": "$8.74"
}, {
"_id": "5968dd23fc13ae04d9000003",
"product_name": "Sample HBr",
"supplier": "Schmitt-Weissnat",
"quantity": 211,
"unit_cost": "$20.53"
}];
var dataSource2 = [{
"_id": "5968dd23fc13ae04d90000021",
"product_name": "Hybrid product",
"supplier": "Wisozk Inc",
"quantity": 261,
"unit_cost": "$10.47"
}, {
"_id": "5968dd23fc13ae04d90000022",
"product_name": "Mountain Sample Juniperus ashei",
"supplier": "Keebler-Hilpert",
"quantity": 292,
"unit_cost": "$8.74"
}, {
"_id": "5968dd23fc13ae04d90000033",
"product_name": "Dextromathorphan HBr",
"supplier": "Schmitt-Weissnat",
"quantity": 211,
"unit_cost": "$20.53"
}];
const searchCriteria = 'sample hybrid';
const searchResult = [];
function compareEachWord(str, searchCriteria) {
var word = searchCriteria.split(" ");
for(i=0; i<=word.length; i++) {
return str.indexOf(word[i]) !== -1;
}
}
function filterFromDS1() {
const result = _.filter(dataSource1, (item) => {
return compareEachWord(_.toLower(item.product_name), searchCriteria);
});
return result;
}
function filterFromDS2() {
const result = _.filter(dataSource2, (item) => {
return compareEachWord(_.toLower(item.product_name), searchCriteria);
});
return result;
}
searchResult['first'] = filterFromDS1();
searchResult['second'] = filterFromDS2();
console.log(searchResult);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
【问题讨论】:
标签: javascript ecmascript-6 lodash