在foreach循环中删除匹配项

时间:2018-11-18 17:39:31

标签: javascript jquery html arrays

我想做的是,将html选择选项转换为mysql查询的一部分,首先将所有选项文本转换为数组,然后转换为字符串,但要防止在其中包含某些选项此字符串在foreach循环中。

到目前为止,我尝试过,但是它包含了我使用的所有选项

if (v != 'blah 0' || v != 'blah 99' || v != 'blah 100') {

但不起作用。我不想将这些值放在字符串中。

var array = [];
var str = "";
$('select option').each(function() {
  var text = $(this).text();
  array.push(text);
});
$.each(array, function(i, v) {
  if (v != 'blah 0' || v != 'blah 99' || v != 'blah 100') {
    str += '("' + v + '" ,18),';
  }
});

console.log(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
  <option>blah 1</option>
  <option>blah 0</option>
  <option>blah 2</option>
  <option>blah 3</option>
  <option>blah 4</option>
  <option>blah 0</option>
  <option>blah 5</option>
  <option>blah 99</option>
  <option>blah 100</option>
</select>

1 个答案:

答案 0 :(得分:3)

您应使用和&&代替或在条件下使用||

var array = [];
var str = "";
$('select option').each(function() {
  var text = $(this).text();
  array.push(text);
});
$.each(array, function(i, v) {
  if (v != 'blah 0' && v != 'blah 99' && v != 'blah 100') {
    str += '("' + v + '" ,18),';
  }
});
console.log(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
  <option>blah 1</option>
  <option>blah 0</option>
  <option>blah 2</option>
  <option>blah 3</option>
  <option>blah 4</option>
  <option>blah 0</option>
  <option>blah 5</option>
  <option>blah 99</option>
  <option>blah 100</option>
</select>

您也可以改用.filter().map()

var str = $('select option').filter(function() {
  return ['blah 0', 'blah 99', 'blah 100'].indexOf($(this).text()) == -1;
}).map(function(){
  return '("'+$(this).text()+'" ,18)';
}).toArray().join(',');

console.log(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
  <option>blah 1</option>
  <option>blah 0</option>
  <option>blah 2</option>
  <option>blah 3</option>
  <option>blah 4</option>
  <option>blah 0</option>
  <option>blah 5</option>
  <option>blah 99</option>
  <option>blah 100</option>
</select>