私はJavaScriptには比較的新しいので、私は余裕があります。 Freecodecampの問題の1つを解決しながら、2つのアレイで一意の値を見つける必要がありました。私は少しのコードを書いた。Javaスクリプトの配列の最後に不明な要素がありますか?
整数だけを含む配列でうまく動作します。この問題は、文字列配列を比較するときに発生します。末尾の要素が最終的な出力配列に追加され、表示されません。このコードには1つの値しか出力されません。
このようなものです。
"[*] Total unique values found = 2"
"[*] Unique values = pink wool,"
これはコードです。かなり難読化されています。
function diffArray(arr1, arr2) {
var newArr = [];
var length1 = arr1.length;
var length2 = arr2.length;
var test = true;
var tab = ' ';
console.log('[*] Starting ... '+tab);
while(arr1.length > 0 && arr2.length > 0)
{
console.log('[*] Entering while loop.');
reset:
for (var i=0; i<arr2.length; i++)
{
console.log('[*] Comparing '+arr1[0]+' and '+arr2[i]);
if(arr1[0] == arr2[i])
{
console.log('[*] Matched ... ')
console.log(' $ Removig '+arr1[0]+' from arr1 and arr2');
arr1.splice(0, 1);
arr2.splice(i, 1);
console.log(" $ arr1 length = "+arr1.length);
console.log(" $ arr2 length = "+arr2.length);
break reset;
} else if (i == arr2.length-1)
{
console.log(" $ No match found.");
console.log('[*] Pushing '+arr1[0]+' in newArr');
newArr.push(arr1[0]);
arr1.splice(0, 1);
console.log('[*} newArr = '+newArr);
} else {
console.log('[*] Match failed.')
}
}
}
if(arr2.length > 0) {
newArr.push(arr2);
} else {
newArr.push(arr1);
}
console.log('[*] Total unique values found = '+newArr.length);
console.log('[*] Unique values = '+newArr);
}
diffArray(["diorite", "andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"]);
ここに、実施例のJSBinへのリンクがあります。ここで
は機能していない文字列配列を持つJSBinへのリンクは...助けを
おかげです。
助けを求めるときは、時間をかけてコードを読みやすく、一貫してフォーマットしてください。 –
例としてJSBinを使用する必要はありません。[Stack Snippets](http://meta.stackoverflow.com/questions/270944/feedback-requested-stack-snippets-2-0)を使用して質問を実行可能にしてください。 – Barmar
@Barmarはチップをありがとう。私はそれについて知らなかった。 – Dimensionless