2 回答

TA貢獻(xiàn)1772條經(jīng)驗 獲得超6個贊
所以讓我們用最少的代碼工作:
const goal = '4002,4003,4004,4005,4006,4007';
const test ='3500,3700,4002,4006,4007,4005,4004,4003';
如果每個測試數(shù)字都包含在目標(biāo)內(nèi),您需要一個返回 true 的方法。
function inside(a, b) {
? //array of numbers
? const aV = a.split(',').map( e => +e);
? const bV = b.split(',').map( e => +e);
? //every b must be in a
? return bV.every( v => aV.indexOf(v) !== -1 );
}
const goal = '1,2,3';
const test ='1,2';
function inside(b, a) {
? //array of numbers
? const aV = a.split(',').map( e => +e);
? const bV = b.split(',').map( e => +e);
? //every b must be in a
? return bV.every( v => aV.indexOf(v) !== -1 );
}
console.log('Is', test);
console.log('inside', goal);
console.log('=>', inside(test, goal) );
編輯
這是一個逐步解決方案您需要一個接受兩個字符串并返回一個布爾值的函數(shù)。
function inside(a,b) {
? ? return true;
}
使用“數(shù)組作為逗號分隔的字符串”是痛苦的......讓我們將字符串轉(zhuǎn)換為數(shù)組,用“,”分割
function inside(b, a) {
? //array of numbers
? const aV = a.split(',');
? const bV = b.split(',');
? return true
}
然后我從字符串?dāng)?shù)組更改為數(shù)字?jǐn)?shù)組,.map( e => +e)這完全沒用哈哈...抱歉...所以讓我們忘記這一點(diǎn)
好的,我們要確保 Bv 中的每個值都在 aV 中。因此,對于 Bv 中的給定值(如 x),我們想要測試 x 是否在 aV 中。讓我們檢查 aV 中 x 的索引:aV.indexOf(x) 如果是-1,則意味著not present......
太棒了,讓我們?yōu)槊恳粋€bV !
function inside(b, a) {
? //array of numbers
? const aV = a.split(',');
? const bV = b.split(',');
? for( let i = 0; i < bV.length; i++) {
? ? const x = bV[i];
? ? const index = aV.indexOf(x);
? ? if ( index === -1 ) {
? ? ? ? //Not present, we stop here
? ? ? ? return false;
? ? }
? }
? //So we check for every Bv and none were absent, let's return true
? return true;
}
好的,它可以工作,但是......我不喜歡使用for數(shù)組,讓我們這樣做forEach
function inside(b, a) {
? //array of numbers
? const aV = a.split(',');
? const bV = b.split(',');
? //Let's define everything is ok
? let result = true;
? bV.forEach( x => {
? ? if ( aV.indexOf(x) === -1 )
? ? ? ? result = false;
? })
? return result;
}
很好,但這正是該方法的重點(diǎn)every!
function inside(b, a) {
? //array of numbers
? const aV = a.split(',');
? const bV = b.split(',');
? return bV.every( x => {
? ? if ( aV.indexOf(x) === -1 )
? ? ? ? result = false;
? ? return true;
? })
}
讓我們簡短地說
function inside(b, a) {
? //array of numbers
? const aV = a.split(',').map( e => +e);
? const bV = b.split(',').map( e => +e);
? //every b must be in a
? return bV.every( v => aV.indexOf(v) !== -1 );
}

TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
您可以使用一些內(nèi)置的 javascript 函數(shù)來完成此操作。
首先拆分值,將它們存儲在數(shù)組中并對值進(jìn)行排序。您可以比較該數(shù)組的元素是否等于源數(shù)組。
我做了一個jsfiddle來解釋它。 https://jsfiddle.net/3cLa5614/
function checkValues(input) {
const sources = document.getElementById('source').value.split(',').sort();
const values = input.value.split(',').sort();
let comparator = sources.splice(0,values.length);
return JSON.stringify(comparator)==JSON.stringify(values)
}
添加回答
舉報