在搜索应用程序中用JSON数据交换JavaScript数组
Swapping a JavaScript array with JSON data in a Search App?
大家好,我有一个应用程序,脚本search.js在其中搜索JavaScript数组,并在用户在搜索栏中输入单词并按下回车键时显示结果列表。我正在尝试将数组切换为artists.JSON.文件中的JSON数据
function Artist(image, title, link) {
this.image = image;
this.title = title;
this.link = link;
}
var artists = []
artists.push(new Artist("image", "item1", "1.html"));
artists.push(new Artist("image", "item2", "2.html"));
artists.push(new Artist("image", "item3", "3.html"));
artists.push(new Artist("image", "item4", "4.html"));
artists.push(new Artist("image", "item5", "5.html"));
artists.push(new Artist("image", "item6", "6.html"));
var searchBox = document.querySelector("#search");
searchBox.focus();
function doSearch(event) {
var msg = document.querySelector("#msg");
var artistList = document.querySelector("#artist-list");
artistList.innerHTML = "";
var searchTerm = searchBox.value.trim().toLowerCase();
msg.innerHTML = "";
if (event.keyCode === 13) {
if (searchTerm === "") {
msg.innerHTML = "You didn't enter anything";
msg.classList.add("error");
} else {
var count = 0;
for (var i = 0; i < artists.length; i ++) {
if (artists[i].title.toLowerCase().search(searchTerm) !== - 1) {
artistList.innerHTML += "<li><a href='artists/" + artists[i].link + "'>" + artists[i].title + "<a/></li>";
count ++;
}
//else if()
}
msg.innerHTML = "For " + searchTerm + ". We found " + count + " results.";
msg.classList.remove("error");
}
}
}
searchBox.addEventListener("keyup", doSearch, false);
var msgTxt = document.querySelector("#msg");
var artistList = document.querySelector("#artist-list");
var searchBox = document.querySelector("#search");
msgTxt.innerHTML = "";
searchBox.value = "";
searchBox.addEventListener("keyup", doSearch, false);
我想在下面用JSON数据替换艺术家数组,这样我就可以搜索这个数组而不是数组,我可以很好地加载JSON数据,但我很难在函数中替换数组。任何帮助都将不胜感激。
[
{
"image":"image1",
"title":"title1",
"link":"link1"
},
{
"image":"image2",
"title":"title2",
"link":"link2"
},
{
"image":"image3",
"title":"title3",
"link":"link3"
},
{
"image":"image4",
"title":"title4",
"link":"link4"
},
{
"image":"image5",
"title":"title5",
"link":"link5"
},
]
如果想把一个类变成一个简单的对象,最好的方法是向类中添加一个方法,如下所示:
Artist.prototype.toJson=function() {
return {
image:this.image,
title:this.title,
link:this.link
}
}
那么将Artist数组转换为JSON数组所需要做的就是artists.map(function(a) { return a.toJson(); })
相关文章:
- 基本html页面和弹出窗口之间的数据交换
- 使用 POST 和 GET 通过端点交换数据
- HTML5 拖放 - 如何捕获和交换数据属性
- 在搜索应用程序中用JSON数据交换JavaScript数组
- Socket.IO:如何在同一服务器中的Socket.on()事件之间通信/交换数据
- JQuery 数据表交换行
- 节点.js游戏开发,客户端-服务器数据交换逻辑
- 在两个选中的元素之间交换数据
- 在角度UI-Grid中交换数据,在外部更改数据集时不可见的新列
- 如何使用javascript或jQuery交换具有数据值的链接
- 在angularjs中的控制器之间交换数据
- Node.js和socket.io不允许连接和交换数据
- 使用ES6类和JSON交换数据
- 使用jquery懒惰加载插件与ZURB基础数据交换
- 基础6交换数据
- 交换jQuery数据表中的行
- 我如何在安卓手机和英特尔爱迪生之间不断交换数据
- 如何根据窗口大小调整HTML表中的行数,并按定时间隔交换数据
- 如果数据存在,Knockout js网格交换输入字段
- 对于拥有Cocoa和JS客户端的web服务来说,最简单的数据交换格式是什么?