SWEEPFILE = 'sweep.wav'
RECFILE = 'rec.wav'
OUTPUTFILE = 'IR.wav'
import wavfile
from scipy import signal
import numpy as np
def ratio(dB):
return np.power(10, dB * 1.0 / 20)
def padarray(A, length, before=0):
t = length - len(A) - before
if t > 0:
width = (before, t) if A.ndim == 1 else ([before, t], [0, 0])
return np.pad(A, pad_width=width, mode='constant')
else:
width = (before, 0) if A.ndim == 1 else ([before, 0], [0, 0])
return np.pad(A[:length - before], pad_width=width, mode='constant')
def filter20_20k(x, sr): # filters everything outside out 20 - 20000 Hz
nyq = 0.5 * sr
sos = signal.butter(5, [20.0 / nyq, 20000.0 / nyq], btype='band', output='sos')
return signal.sosfilt(sos, x)
sr, a, br = wavfile.read(SWEEPFILE, normalized=True)
sr, b, br = wavfile.read(RECFILE, normalized=True)
a = padarray(a, sr*50, before=sr*10)
b = padarray(b, sr*50, before=sr*10)
h = np.zeros_like(b)
for chan in [0, 1]:
b1 = b[:,chan]
b1 = filter20_20k(b1, sr)
ffta = np.fft.rfft(a)
fftb = np.fft.rfft(b1)
ffth = fftb / ffta
h1 = np.fft.irfft(ffth)
h1 = filter20_20k(h1, sr)
h[:,chan] = h1
h = h[:10 * sr,:]
h *= ratio(dB=40)
wavfile.write(OUTPUTFILE, sr, h, normalized=True, bitrate=24)
我希望只有当所有三个ID上都有字符“X”时才能执行该功能。
答案 0 :(得分:2)
您可以在数组中设置这些值,然后使用Array#Filter
检查它们是否都等于X
。
function checkValues() {
const values = [
document.getElementById('b1').value,
document.getElementById('b2').value,
document.getElementById('b3').value,
];
if (values.filter(a => a.toLowerCase() === 'x').length === values.length) {
console.log('Someone won');
}
}
<input id="b1"/>
<input id="b2"/>
<input id="b3"/>
<button onclick="checkValues()">Check values</button>
答案 1 :(得分:0)
function checkIfSomeoneWon() {
var b1 = document.getElementById('b1').value;
var b2 = document.getElementById('b2').value;
var b3 = document.getElementById('b3').value;
if((b1.indexOf("X") !== -1)&&(b2.indexOf("X") !== -1)&&(b3.indexOf("X") !== -1)){
alert('Someone Won!');
}
}
答案 2 :(得分:0)
试试这个
function check() {
var one = $('#one').val(), two = $('#two').val();
if (one.indexOf('x') > -1 && two.indexOf('x') > -1) {
alert('winner you got the game');
}
}
这应该有用。
答案 3 :(得分:0)
只需使用&&
运算符即可
function checkIfSomeoneWon() {
if ($('#b1').html() === 'X' && $('#b2').html() === 'X' && $('#b3').html() === 'X')
{
alert('Someone Won!');
}
}
checkIfSomeoneWon();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id='b1'>X</span>
<span id='b2'>X</span>
<span id='b3'>X</span>
答案 4 :(得分:0)
你的条件陈述错了!
jQuery选择器会返回一个像数组一样的jQuery对象,当你得到html()时,它会在第一个对象中返回你的html e.g
<div>
<div id="b1">Y</div>
<div id="b2">X</div>
<div id="b3"></div>
</div>
条件陈述的结果将
$('#b1, #b2, #b3').html() => Y
我不知道你想要什么,但是当你得到html进行比较时,我认为你的解决方案很糟糕。我认为你应该使用复选框并将它们的值进行比较。
回到你的问题,你可以使用
var result = $('#b1,#b2,#b3').filter(function(i, e){
return $(e).html() === 'X';
});
if(result && result.length) {
//TODO something
alert('Someone Won!');
}