我需要比较两个数组的记录,如果相等则添加样式 我这样做:
var json = ["VIP Section","Master Section","Press Section","God Section"];
var sections = ["VIP Section","Master Section"];
if ( sections.length > 0 ) {
for (i = 0; i < json.length; i++) {
if ( json[i] == sections[i] ) {
$('#test-ul').append('<li style="color: red;">' + sections[i] + '</li>');
} else {
$('#test-ul').append('<li>' + json[i] + '</li>');
}
}
} else {
$('#test-ul').append('<li>No sections!</li>');
}
然而,这并不总是有效...
一旦我有颜色等于元素,但接下来,我有所有元素没有颜色
...
哪里不好?或者也许是另一种解决方案?
答案 0 :(得分:1)
设置它的方式,它将比较数组中相同位置的每个元素。例如,它仅将json
中的第一项与sections
中的第一项进行比较,依此类推。如果您的目标是确定json
中的任何元素是否也在sections
以及任何顺序中,那么请对indexOf()
中的每个项目使用json
{1}}确定数组项是否也存在于sections
中。无论他们处于什么顺序,这都会有效。
在数组上使用indexOf()
时,它将返回找到项目的数组中的位置。如果它不存在,它将返回-1。
注意在下面的代码段中,我将json
中的第二个数组项移动到数组末尾以证明这一点。
var json = ["VIP Section","Press Section","God Section","Master Section"];
var sections = ["VIP Section","Master Section"];
if ( sections.length > 0 ) {
for (i = 0; i < json.length; i++) {
if ( sections.indexOf(json[i]) > -1 ) {
$('#test-ul').append('<li style="color: red;">' + json[i] + '</li>');
} else {
$('#test-ul').append('<li>' + json[i] + '</li>');
}
}
} else {
$('#test-ul').append('<li>No sections!</li>');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="test-ul"></ul>
进一步阅读:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf