javascript indexOf Array 在浏览器上的不同结果
javascript indexOf Array Different Result on browser
这是我的片段
var arrays = [
['name1', -10, 100, 1, 'abc', 'xxx'],
['name1', -10, 100, 1, 'abc', 'xxx'],
['name2', -8, 80, 1, 'bbb', 'zzz'],
['name1', -10, 100, 1, 'abc', 'xxx']
];
$('#searchsite').keyup(function() {
var keyword = $(this).val();
var minlength = 3;
var result = [];
if (keyword.length >= minlength) {
for (var i = 0; i < arrays.length; i++) {
if (arrays[i][0].toLowerCase().indexOf(keyword) !== -1) {
result.push('<input type="button" name="button" class="btn btn-danger" value="' + arrays[i][0] + '"><br>');
}
}
resultunique = jQuery.unique(result);
$('#searchresult').html(resultunique);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="searchsite" />
<div id="searchresult"></div>
在 firefox 和 chrome
上得到不同结果的任何原因
您对 $.unique() 的使用是错误的,它仅适用于 dom 个元素。
Description: Sorts an array of DOM elements, in place, with the
duplicates removed. Note that this only works on arrays of DOM
elements, not strings or numbers.
由于您每次都创建一个新的 input
元素标记,因此没有重复项。
您可以自己实现独特的逻辑
var arrays = [
['name1', -10, 100, 1, 'abc', 'xxx'],
['name1', -10, 100, 1, 'abc', 'xxx'],
['name2', -8, 80, 1, 'bbb', 'zzz'],
['name1', -10, 100, 1, 'abc', 'xxx']
];
$('#searchsite').keyup(function() {
var keyword = $(this).val().toLowerCase();
var minlength = 3;
var result = [],
keys = {};
if (keyword.length >= minlength) {
result = $.map(arrays, function(array) {
var name = array[0].toLowerCase();
if (!keys[name]) {
keys[name] = true;
if (name.indexOf(keyword) !== -1) {
return '<input type="button" name="button" class="btn btn-danger" value="' + array[0] + '"><br>';
}
}
})
$('#searchresult').html(result.join(''));
} else {
$('#searchresult').html('');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="searchsite" />
<div id="searchresult"></div>
这是我的片段
var arrays = [
['name1', -10, 100, 1, 'abc', 'xxx'],
['name1', -10, 100, 1, 'abc', 'xxx'],
['name2', -8, 80, 1, 'bbb', 'zzz'],
['name1', -10, 100, 1, 'abc', 'xxx']
];
$('#searchsite').keyup(function() {
var keyword = $(this).val();
var minlength = 3;
var result = [];
if (keyword.length >= minlength) {
for (var i = 0; i < arrays.length; i++) {
if (arrays[i][0].toLowerCase().indexOf(keyword) !== -1) {
result.push('<input type="button" name="button" class="btn btn-danger" value="' + arrays[i][0] + '"><br>');
}
}
resultunique = jQuery.unique(result);
$('#searchresult').html(resultunique);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="searchsite" />
<div id="searchresult"></div>
在 firefox 和 chrome
您对 $.unique() 的使用是错误的,它仅适用于 dom 个元素。
Description: Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers.
由于您每次都创建一个新的 input
元素标记,因此没有重复项。
您可以自己实现独特的逻辑
var arrays = [
['name1', -10, 100, 1, 'abc', 'xxx'],
['name1', -10, 100, 1, 'abc', 'xxx'],
['name2', -8, 80, 1, 'bbb', 'zzz'],
['name1', -10, 100, 1, 'abc', 'xxx']
];
$('#searchsite').keyup(function() {
var keyword = $(this).val().toLowerCase();
var minlength = 3;
var result = [],
keys = {};
if (keyword.length >= minlength) {
result = $.map(arrays, function(array) {
var name = array[0].toLowerCase();
if (!keys[name]) {
keys[name] = true;
if (name.indexOf(keyword) !== -1) {
return '<input type="button" name="button" class="btn btn-danger" value="' + array[0] + '"><br>';
}
}
})
$('#searchresult').html(result.join(''));
} else {
$('#searchresult').html('');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="searchsite" />
<div id="searchresult"></div>