指定された文字列からオブジェクトを作成するJS関数を記述する必要があります。文字列はオブジェクトキーです。繰り返される文字は2度は含まれません。すべてのキーの値はゼロです。javascript - missing arrays
例:入力objFromStr("aaabc")
はここ{a: 0, b: 0, c: 0}
を返す必要がありますが、私のソリューションです:
function objFromStr(inStr) {
let charsArr = inStr.split("");
let charsObj = {};
var alreadyInArr = [];
for (var i = 0; i < charsArr.length; i++) {
if (!(alreadyInArr.includes(charsArr[i]))) {
charsObj[charsArr[i]] = 0;
} else {
alreadyInArr.push(charsArr[i]);
}
}
return charsObj;
}
予想通り、このソリューションは動作しますが、私は理由を理解していません。 alreadyInArr
を使用して、文字の重複をチェックします。しかし、私がalreadyInArr
を記録すると、それは空です。
ので、このコードを実行した後:
function objFromStr(inStr) {
let charsArr = inStr.split("");
console.log("charsArr is:", charsArr);
let charsObj = {};
var alreadyInArr = [];
for (var i = 0; i < charsArr.length; i++) {
if (!(alreadyInArr.includes(charsArr[i]))) {
charsObj[charsArr[i]] = 0;
} else {
alreadyInArr.push(charsArr[i]);
}
}
console.log("alreadyInArr is:", alreadyInArr);
return charsObj;
}
console.log(objFromStr("aaabc"));
私の出力は次のとおりです。
alreadyInArr
が空であると予想されるように、まだ機能はまだ動作する理由
charsArr is: [ 'a', 'a', 'a', 'b', 'c' ]
alreadyInArr is: []
{ a: 0, b: 0, c: 0 }
誰かが、説明できますか?ここで
はペンです:https://codepen.io/t411tocreate/pen/bYReRj?editors=0012
alreadyInArrに項目があり、alreadyInArrが空の場合は、何かをalreadyInArrに追加します。 – James
それはなぜ機能するのですか?値を上書きするだけなので... – epascarello
オブジェクトに対して同じキーを複数回定義することはできません。あなたのコードは 'obj ['a'] = 0'を繰り返し設定することができます。結果objには' a 'という名前のキーがあります。 'a:0'となります。 – IrkenInvader