比较数组中的第二个字符串和第一个字符串
Compare the 2nd strings characters with the 1st string in an array
我正试图找出自由代码营的挑战,其中陈述如下:
如果数组第一个元素中的字符串包含数组第二个元素中字符串的所有字母,则返回true。
我理解如何做到这一点,如果第二个字符串有一个单一的字符,或者如果第一个字符串有第二个字符串包含在完全相同的序列(例如。"hello","hel",而不是"hello","olleh")。但是我还没有想出解决这个挑战的正确方法。
这是我的代码…
function mutation(arr) {
var myArray = arr.splice(1).toString().toLowerCase();
var splicedArray = arr.toString().toLowerCase();
if (splicedArray.search(myArray) != -1) {
return true;
} else {
return false;
}
}
任何具有不同字符序列的组合计算结果为false。
// e.g this is false
mutation(['Alien', 'line'])
完成这项任务的正确方法是什么?
多亏了@Bergi,我找到了答案。他也很好地允许我张贴自己的答案。
function mutation(arr) {
var string2 = arr.splice(1).toString().toLowerCase();
var string1 = arr.toString().toLowerCase();
for(var i = 0; i < string2.length; i++) {
if (string1.indexOf(string2.charAt(i)) == -1) {
return false;
}
}
return true;
}
如果有人像我一样(JS初学者)遇到这个任务并找到了这个解决方案,如果你不知道这里使用的方法,这里有一些值得注意的资源可以阅读。
- .splice ()
- indexOf ()
- .slice ()
- .slice()和.splice()方法的区别
你也可以这样做:
/**
* Match function that operates on a data array with two elements, where the
* first element is the query and the second element is the searchable data.
*
* Returns true if the query string contains all of the letters of the searchable
* data string.
*
* @param {Array} data - contains query and searchable string data
*
* @return {Boolean} if a match occured
*/
var match = function (data) {
// Convert strings to arrays.
var query = Array.prototype.slice.call(data[0]);
var searchableData = Array.prototype.slice.call(data[1]);
// Every query string character should occur in the searchable data.
return query.every(function (search) {
// Only some of the searchable data characters should occur in the query data.
return searchableData.some(function (target) {
return search === target;
});
});
};
match([ 'abc', 'xyzadefbhijc' ]); // returns true
match([ 'abq', 'xyzadefbhijc' ]); // returns false
我的突变
function mutation(arr) {
var string2 = arr[1].toLowerCase();
var string1 = arr[0].toLowerCase();
for(var i = 0; i < string2.length; i++) {
if (string1.indexOf(string2.charAt(i)) == -1) {
return false;
}
}
return true;
}
同样可以使用map:
function mutation(arr) {
var one = arr[0].toLowerCase();
var two = arr[1].toLowerCase().split('');
var match = true;
two.map(function(val){
if(one.indexOf(val) === -1){
match = false;
}
});
return match;
}
function mutation(arr) {
var src=arr[0].toLowerCase();
var dist=arr[1].toLowerCase();
for(var i=0;i<dist.length;i++){
if(src.indexOf(dist[i])<0) return false;
}
return true;
}
console.log(mutation(["voonoo", "no"]))
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- jquery从2个json字符串构建一个复选框表单
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 用jQuery将字符串从一个类替换为另一个类
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- RxJS油门行为;立即获取第一个值
- Angular UI网格:如何通过第一个UI网格中的按钮使第二个UI网格可见
- 选择多个实例中的第一个
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- 使用 javascript 和正则表达式删除 HTML 字符串中的第一个 img 标记
- 如何检查多维数组中是否存在字符串,然后显示数组中找到该字符串的第一个项
- 如何在第一个“/”(斜杠)处拆分字符串并将其部分包围在“中
- 使用脚本查找文本字符串,直到第一个html标记
- 从字符串列表中删除所有html标记,除了第一个
- Javascript字符串:删除除数字和第一个"
- 如何迭代javascript行分隔的字符串,检查分号分隔的第一个值,并在值相等的地方连接行