我有几页有多媒体内容(flash),我希望能够通过页面搜索它的内容。
由于它的内容不是可搜索的,并且我有一个文档,其中包含将出现在每个页面中的所有文字/图像描述,我正在考虑将这些内容写入多个页面,并将它们链接到具有多媒体的相应页面内容,并使用搜索引擎索引此信息。
但这看起来像过度复杂。所以我虽然使用javascript并将每个页面的关键字插入到它自己的数组中,并且当用户搜索它时会比较每个数组并打印: “此内容可在以下页面中找到:”
这看起来很简单,但我想从更有经验的人那里得到一些意见: - 要么是因为我要遇到的问题; - 或更好/更容易的解决方案。
我要求任何有贡献的人都认为我不是那种有编程经验的人。
答案 0 :(得分:0)
这听起来像是Array.prototype.filter
的工作
您尚未描述数据结构,因此我将假设 Object 的 Array 。
假设你有这个数据结构,
var all_items = [
{url: 'a', title:'First Entry', description:'Foo'},
{url: 'b', title:'Second Entry', description:'Bar'},
{url: 'c', title:'Third Entry', description:'FooBar'}
// etc..
];
您可以根据.filter
这样编写搜索功能
function search(arr, str, url /* =true */, title /* =true */, desc /* =false */) {
var src_fnc;
// set true defaults
if (undefined === url) url = true;
if (undefined === title) title = true;
// toBool
url = url && true || false;
title = title && true || false;
desc = desc && true || false;
// make function
src_fnc = function (e) {
if (url && e.url.indexOf(str) >= 0) return true;
if (title && e.title.indexOf(str) >= 0) return true;
if (desc && e.description.indexOf(str) >= 0) return true;
return false;
};
return arr.filter(src_fnc);
}
然后调用它
search(all_items, 'ir');
/* [
{url: 'a', title:'First Entry', description:'Foo'},
{url: 'c', title:'Third Entry', description:'FooBar'}
] */