Min*_*rey 11 javascript arrays dictionary
我试图了解如何实现map方法(而不是使用for循环)来检查字符串的palindromes并返回布尔值,以确定映射的数组元素是否与原始数组元素相同.我似乎无法理解map方法的语法.如何让地图在原始数组中的每个元素上运行?有什么价值?这是我的工作代码,它只记录未定义的值:
function palindromeChecker(string) {
var myString = string.toLowerCase();
var myArray = myString.split(" ");
var newArray = myArray.map(function (item) {
item.split("").reverse().join("");
return newArray === myArray;
});
}
console.log(palindromeChecker("What pop did dad Drink today"));
Run Code Online (Sandbox Code Playgroud)
这是一个小提琴的链接:https: //jsfiddle.net/minditorrey/3s6uqxrh/1/
这里有一个相关的问题:
但是当使用它来对字符串数组执行函数时,它并没有回答我对map方法语法的困惑.
too*_*cts 10
该map方法将字面上的"映射"函数调用到数组中的每个元素,将其作为将数组中每个整数的值增加1的简单示例:
var items = [1,2,3];
items.map(function(item) {
return item + 1;
});
// returns [2,3,4]
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你试图使用map接受或拒绝一个字符串,如果它是一个回文,所以一个简单的实现可能是:
var items = ['mum', 'dad', 'brother'];
items.map(function(item) {
return item.split('').reverse().join('') === item;
});
// returns [true, true, false]
Run Code Online (Sandbox Code Playgroud)
我不是100%肯定你使用的原因map,因为如果你试图只是过滤数组并删除不是回文的字符串,你应该使用该filter方法代替,它以相同的方式工作,但是删除任何返回false:
var items = ['mum', 'dad', 'brother'];
items.filter(function(item) {
return item.split('').reverse().join('') === item;
});
// returns ['mum', dad']
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你首先拆分一个字符串来获取你的字符数组; 您可能还希望将该字符串设置为小写并删除标点符号,因此实现可能是:
var string = 'I live at home with my Mum, my Dad and my Brother!';
var items = string.toLowerCase().replace(/[^a-z0-9-\s]+/, '').split(' ');
items.filter(function(item) {
return item.split('').reverse().join('') === item;
});
// returns ['i', 'mum', dad']
Run Code Online (Sandbox Code Playgroud)
正如您在问题的其中一条评论中所提到的,return如果您使用单独的函数执行检查,则需要确保函数中的值,因此这是您的函数的外观:
function checkPalindromes(string) {
var items = string.toLowerCase().replace(/[^a-z0-9-\s]+/, '').split(' ');
items.filter(function(item) {
return item.split('').reverse().join('') === item;
});
return items;
}
Run Code Online (Sandbox Code Playgroud)
你会用它来称呼它:
checkPalindromes('I live at home with my Mum, my Dad and my Brother!'); // ['i', 'mum', 'dad']
Run Code Online (Sandbox Code Playgroud)
小智 9
尝试这样的事情:
let str = 'hello';
let tab = [...str];
tab.map((x)=> {
console.log("|"+x+"|");
return x;
})
Run Code Online (Sandbox Code Playgroud)