gpt4 book ai didi

字符串元素数组上的Javascript映射方法

转载 作者:可可西里 更新时间:2023-11-01 02:23:09 26 4
gpt4 key购买 nike

我试图了解如何实现 map 方法(而不是使用 for 循环)来检查字符串中的回文并返回 bool 值以判断映射的数组元素是否与原始数组元素相同。我似乎无法理解 map 方法的语法。如何让映射对原始数组中的每个元素起作用?值(value)是多少?这是我的工作代码,它只记录一个未定义的值:

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"));

这是 fiddle 的链接: https://jsfiddle.net/minditorrey/3s6uqxrh/1/

这里有一个相关的问题:

Javascript array map method callback parameters

但是当我使用 map 方法对字符串数组执行函数时,它并没有回答我对 map 方法语法的困惑。

最佳答案

map 方法将逐字地“映射”一个函数调用到数组中的每个元素,将此作为将数组中每个整数的值增加 1 的简单示例:

var items = [1,2,3];
items.map(function(item) {
return item + 1;
});

// returns [2,3,4]

在您的情况下,您正在尝试使用 map 来接受或拒绝字符串(如果它是回文),因此一个简单的实现可能是:

var items = ['mum', 'dad', 'brother'];
items.map(function(item) {
return item.split('').reverse().join('') === item;
});

// returns [true, true, false]

我不是 100% 确定你使用 map 的原因,因为如果你只是想过滤数组并删除不是回文的字符串,你可能应该使用 filter 方法,它以相同的方式工作,但会删除任何返回 false 的内容:

var items = ['mum', 'dad', 'brother'];
items.filter(function(item) {
return item.split('').reverse().join('') === item;
});

// returns ['mum', dad']

在您的情况下,您首先要拆分一个字符串以获得您的字符数组;您可能还想使该字符串小写并删除标点符号,因此实现可能是:

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']

如对您的问题的评论之一所述,如果您使用单独的函数执行检查,则需要确保从函数中返回一个值,所以这就是您的函数的方式应该看起来:

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;
}

你可以这样调用它:

checkPalindromes('I live at home with my Mum, my Dad and my Brother!'); // ['i', 'mum', 'dad']

关于字符串元素数组上的Javascript映射方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34925609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com