如果数组第一个元素中的字符串包含数组第二个元素中字符串的所有字母,则返回true
Return true if the string in the first element of the array contains all of the letters of the string in the second element of the array?
这是我目前为止的代码;我所做的就是循环遍历每一个字母。我被困在如何测试字符串是否有相同的字符。
function mutation(arr) {
for (var i=0;i<arr.length;i++){
for(var j =0;j<arr[i].length;j++){
}
}
}
mutation(['hello', 'hey']);
字符不必在相同的索引处,因此,例如,['Alien', 'line'],应该返回true。
我使用了上面的答案,但修改了它以删除大小写,否则我将在Hello和Hello
上获得falsefunction mutation(arr) {
//first split the arr into the two inputs and convert all to lower case
var firstArray = arr[0].toLowerCase().split("");
var secondArray = arr[1].toLowerCase().split("");
//now using the code provided by the above comment which is really clean
var count = 0;
for (var i =0; i < secondArray.length; i++) {
if(firstArray.indexOf(secondArray[i]) > -1 ) {
count++;
}
}
if (count == secondArray.length) {
return true
}
//changed the code provided above to handle the true/false criteria of the excercise
else {return false; }
}
mutation(['hello', 'hey']);
简洁、现代、易于阅读:
function mutation(arr) {
const firstEl = arr[0].toLocaleLowerCase();
const secondEl = arr[1].toLocaleLowerCase().split('');
return secondEl.every(el => firstEl.includes(el));
}
console.log('mutation(["hello", "hey"]): ', mutation(["hello", "hey"]));
console.log('mutation(["Alien", "line"]): ', mutation(["Alien", "line"]));
您只需要循环一次,并将第二个数组与第一个数组进行比较。
function mutation(arr) {
var arr1 = arr[0].split('');
var arr2 = arr[1].split('');
var count = 0;
for (var i =0; i < arr2.length; i++) {
if(arr1.indexOf(arr2[i]) > -1 ) {
count++;
}
}
if (count == arr2.length) {
console.log('all in');
}
}
mutation(['alien', 'line']);
或者你可以用filter
:
function mutation(arr) {
var arr1 = arr[0].split('');
var arr2 = arr[1].split('');
if (arr2.filter(function(element, index) { return arr1.indexOf(element); }).length === arr2.length) {
console.log('all in');
}
}
mutation(['alien', 'line']);
接受的答案中的计数器是不必要的。
function mutation(arr) {
var arr1 = arr[0].toLowerCase().split('');
var arr2 = arr[1].toLowerCase().split('');
for (var i=0; i < arr2.length; i++) {
if(arr1.indexOf(arr2[i]) == -1 ) {
return false;
}
}
return true;
}
mutation(["hello", "hey"]);
干净点怎么样?只是对上面的代码做了一点修改。
function mutation(arr) {
var first = arr[0].toLowerCase().split('');
var second = arr[1].toLowerCase().split('');
var count = 0;
// Check every character and if the index is found add one
for (var s in second){
if (first.indexOf(second[s]) > -1) {
count+= 0;
} else
count++;
}
if (count === 0)
return true;
else
return false;
}
这个问题的代码更少
function mutation(arr) {
var arr1 = arr[0].toLowerCase().split('');
var arr2 = arr[1].toLowerCase().split('');
for(var i of arr2)
if(arr1.indexOf(i)===-1)
return false;
return true;
}
mutation(["hello", "hey"]);
以上代码并非在所有情况下都有效因为如果数组中的第一个单词比第二个短那么就需要第二个for循环
for (var i=0; i<arr1.length; i++){
if (arr2.indexOf(arr1[i])==-1){
return false;
你需要2个for循环
function mutation(arr) {
var arr1=arr[0].toLowerCase().split("");
var arr2=arr[1].toLowerCase().split("");
if (arr1.length<arr2.length ){
for (var i=0; i<arr1.length; i++){
if (arr2.indexOf(arr1[i])==-1){
return false;
}
}
}
else if (arr1.length>=arr2.length ){
for (var j=0; j<arr2.length; j++){
if (arr1.indexOf(arr2[j])==-1){
return false;
}
}
}
return true;
}
//mutation(["zyxwvutsrqponmlkjihgfedcba", "qrstu"]);
mutation([ "qrstu", "zyxwvutsrqponmlkjihgfedcba"]);
enter code here
相关文章:
- 对id以某个字符串开头的元素进行计数
- 如何使用jQuery each分离字符串中的元素
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 数组中元素(字符串)的总和
- JavaScript forEach.迄今为止的字符串元素
- 试图从数组中只移除字符串元素,但无法向右循环
- 如何将主干序列化形式的所有字符串元素大写
- 如何在 JS 中将字符串元素解析为对象
- 将 JSON 数组中的字符串元素解析为整数
- 使用字符串元素列表作为 Select2 组件的源
- 从 JavaScript 数组中删除字符串元素
- 将字符串元素传递给数据键
- 使用JavaScript将每个数组字符串(元素)的某些部分加粗
- 检查javascript数组中的字符串元素
- 将数组的字符串元素与另一个数组的对象元素属性进行比较
- 如何拆分字符串数组中的每个字符串元素
- 试图使用映射将字符串元素添加到数组
- 在javascript的for循环中设置数组's字符串元素的长度为一个变量
- 在javascript中查找数组中字符串元素的最大出现次数
- 在Django中发送一个字符串元素列表