有人可以帮帮我吗?我是jQuery的新手。
我有一个如下所示的数组:
//classcCars = [Year, Car Name, Owner's Name]
var classcCars = [
[1927, "Ford Model T", "Brian"],
[1969, "Corvette Sting Ray", "Larry"],
[1967, "Ford Mustang", "John"],
[1969, "Camaro SS", "Samantha"],
[1967, "Volkswagen Beetle"],
[1964, "Porsche 911", "Michael"],
[1962, "Maserati 3500", "Loren"],
[1967, "Ford GT40", "Sarah"]
];
我想要一个可以遍历“classicCars”数组的jQuery函数(仅在 [1] 和 [2]中搜索] ,汽车名称和所有者姓名)并使用部分返回相应的年份和汽车名称以及汽车所有者串。例如,调用:
findCars("Porsche");
应该返回:
<p>Michael Porsche 911 - 1964</p>
此外,findCars()函数应返回多个条目。如果调用以下函数:
findCars("or");
以下内容应该返回:
<p>Brian owns a Ford Model T - 1927</p>
<p>Larry owns a Corvette Sting Ray - 1969</p>
<p>John owns a Ford Mustang - 1967</p>
<p>Michael owns a Porsche 911 - 1964</p>
<p>Loren owns a Maserati 3500 - 1964</p>
<p>Sarah owns a Ford GT40 - 1967</p>
有人可以帮助我吗?我不知道如何在jQuery中的多维数组中进行部分搜索。
谢谢。
答案 0 :(得分:0)
试试这个:
function searchArr( keyword ) {
var retVal = [];
for( var i = 0; i < classcCars.length; i++ ) {
for( var j = 0; j < classcCars[ i ].length; j++ ) {
if( String( classcCars[ i ][ j ] ).toLowerCase().indexOf( String( keyword ).toLowerCase(), 0 ) != -1 ) {
retVal.push( classcCars[ i ] );
}
}
}
return retVal;
}
(对不起以前的错别字)
这只是为了指向正确的方向 - 该函数将返回一个数组,该数组仅包含classcCars数组中包含关键字的元素。
在jsfiddle的例子:http://jsfiddle.net/QtkAf/3/
答案 1 :(得分:0)
下面:
var findCars = (function () {
function found( str, substr ) {
return str && substr && str.indexOf( substr ) > -1;
}
return function ( arr, term ) {
return arr.filter( function ( elem ) {
return found( elem[1], term ) || found( elem[2], term );
}).map( function ( elem ) {
return template({ name: elem[2], car: elem[1], year: elem[0] });
}).join( '' );
};
}());
我正在使用Handlebars模板:
<script id="template" type="text/x-handlebars-template">
<p>{{name}} {{car}} - {{year}}</p>
</script>
用法:
var html_string = findCars( classcCars, 'Porsche' );