记录字段中的模式计数和创建数组

Counting patterns in record fields and creating array

本文关键字:创建 数组 模式 字段 记录      更新时间:2023-09-26

如何计算记录字段中的模式并创建它的数组?

例如:

在中搜索(使用下面的例子)目前给了我多个

的输出
0 0 (**in** seen at index 0 of book 0 title record)
0 13 (**in** seen at index 13 of book 0 title record)
1 19 (**in** seen at index 0 of book 1 title record)
2 -1 (**in** not seen at any index of title record)
理想情况下,我希望代码返回:
2,1,0 (**in** seen 2 times in book 0 title record, **in** seen 1 time in 
book 1 title record and **in** not seen in book 2 title record

提前感谢!

books = [
    {
    title: "Inheritance: Inheritance Cycle, Book 4",
    author: "Christopher Paolini",
    },
{
    title: "The Sense of an Ending",
    author: "Julian Barnes"},
{
    title: "Snuff Discworld Novel 39",
    author: "Sir Terry Pratchett",
    }
]
search = prompt("Title?");
function count(books, pattern) {
    if (pattern) {
        var num = 0;
        var result = [];
        for (i = 0; i < books.length; i++) {
            var index = books[i].title.toLowerCase().indexOf(pattern.toLowerCase());
            do {
                alert(i + " " + index);
                index = books[i].title.toLowerCase().indexOf(pattern.toLowerCase(), index + 1);
            }
            while (index >= 0)
            num = 0;
        }
        return result;
    }
    else {
        return ("Nothing entered!");
    }
}
alert(count(books, search));

使用String.prototype。Match ,它返回一个匹配数组(如果没有则返回null),数组的长度告诉您有多少个匹配。例如

var books = [
    {
    title: "Inheritance: Inheritance Cycle, Book 4",
    author: "Christopher Paolini",
    },
{
    title: "The Sense of an Ending",
    author: "Julian Barnes"},
{
    title: "Snuff Discworld Novel 39",
    author: "Sir Terry Pratchett",
    }
];
var result = [];
var re = /in/ig; 
var matches;
for (var i=0, iLen=books.length; i<iLen; i++) {
  matches = books[i].title.match(re);
  result.push(matches? matches.length : 0);
}
alert(result);