我有以下代码:
var names = ["John Chuck", "Micheal Novak", "john Owen", "Rick John"];
names = _.sortBy( names, function( name ){
return name;
}
它给了我一些名字的列表。现在,如果要进行文件填充,是否可以?
就像过滤“ John”一样,这样最终列表中只有3个名字带有“ John”。
答案 0 :(得分:3)
尝试使用Array.prototype.filter()
和Array.prototype.includes()
进行以下操作:
var names = ["John Chuck", "Micheal Novak", "john Owen", "Rick John"];
names = _.sortBy( names, function( name ){
return name;
}).filter(n => n.toLowerCase().includes('john'));
console.log(names)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.core.min.js"></script>
答案 1 :(得分:1)
您可以在javascript
中使用.includesHTML
var words = ["John Chuck", "Micheal Novak", "John Owen", "Rick John"];
const result = words.filter(word => word.includes("John"));
console.log(result); //result is: Array ["John Chuck", "John Owen", "Rick John"]
注意: .includes区分大小写
答案 2 :(得分:0)
否,在您的特殊情况下,您不会给出第二个参数,因为您正在对字符串进行排序(除非您希望按整个字符串的一部分进行排序...)。
您需要先过滤,然后 sort 。
答案 3 :(得分:0)
由于您使用的是Lodash.js,因此您还可以查看_.reject函数
names = _.reject(names, function(name) {
return name.match(/[.]*john[.]*/i) == undefined;
});
这将仅返回3个名称。看看-JSFIDDLE DEMO
答案 4 :(得分:0)
一个简单的ES6替代方案(没有像Lodash这样的库):
var names = ["John Chuck", "Micheal Novak", "john Owen", "Rick John"];
var result = names.sort((a, b) => a.localeCompare(b)).filter(name => /john/gi.test(name));
console.log(result);