StringifyJSON(実験)
src/stringifyJSON.jsでstringfyJSON関数を直接実装しspecテストに合格した.
n/a.ターゲット
JSON.stringfy関数は入力値をJSON形式に変換します.
ただしundefinedとfunctionはJSONまたはnullに省略される.
stringifyJSON(true); //'true'
stringifyJSON('foo'); //'"foo"'
stringifyJSON([1, 'false', false]);//'[1,"false",false]'
stringifyJSON({ x: 5 }); //'{"x":5}'
stringifyJSON(undefined) //undefined
stringifyJSON(function(){}) //undefined
stringifyJSON({ x: undefined, y: function(){} }) //'{}'
spec/stringifyJSONSpec.jsのstringfiableObjects配列を参照して、テストでどの入力値を渡す必要があるか、stringfilyを考慮してください.
テストに合格したいだけなら、次のようなことを実施できます.
const stringifyJSON = JSON.stringify;
に答える
stringfyJSON関数は、オブジェクトを文字列に変換して転送するシリアル化関数です.
(1)typeofメソッドで入力値のタイプを区別して結果値を取得する必要がある.
(2)文字boolean数値配列オブジェクトの場合、配列オブジェクトが含まれている場合は、再帰関数で文字列として作成し、配列またはオブジェクトが含まれている場合に文字列として作成する必要があります.
✓オブジェクトは文字列「9」に変換する必要があります
if (typeof obj === "number"){
return String(obj);
}
✓オブジェクトは文字列「null」に変換する必要があります if(obj === null){
return "null";
}
typeof obj==「null」ができない理由:オブジェクトとしてキャプチャされます.
✓オブジェクトは文字列「false」に変換する必要があります
if(typeof obj === "boolean"){
return String(obj);
}
✓オブジェクトは文字列「Hello world」に変換する必要があります if(typeof obj === "string"){
return `"${obj}"`
}
✓オブジェクトは文字列[]に変換する必要があります✓オブジェクトは文字列「[8]」に変換する必要があります.
✓オブジェクトは文字列「」に変換する必要があります[hi]
✓オブジェクトは文字列"[8,hi"に変換する必要があります
✓オブジェクトは文字列"[1,0,-1,-0.3,0.3134.3233345,0.0001199999]に変換する必要があります.
✓オブジェクトは文字列「[8,[],3,4]」に変換する必要があります.
✓オブジェクトは文字列[[[[]foo]]に変換する必要があります.
if(Array.isArray(obj)){
let newArr = [];
obj.forEach(function (ele){
newArr.push(stringifyJSON(ele))
})
return `[${newArr}]`
}
forEachメソッドリンク
->メソッドによって配列内の要素を1つずつドラッグします.
->pushメソッドとstringfyJSON再帰関数で空の配列を再挿入します.
Bannaスタイルのテンプレートリフト
[${}]
let newArr2 = [1, 3, 4]
undefined
let a = '9'
undefined
newArr2.push(a)
4
newArr2
(4) [1, 3, 4, '9']
// 여기서 템플릿 리터널을 쓰면 안에는 숫자와 문자열로 바뀐다.
`[${newArr2}]`
'[1,3,4,9]'
新しい方法
✓オブジェクトは文字列"{":"apple"}に変換する必要があります.
✓オブジェクトは、文字列"{"foo:true、[bar]:false、[baz]:null}に変換する必要があります.
✓オブジェクトは文字列"{"boolean,true:true,"boolean,false":false,"null":null}に変換する必要があります.
✓オブジェクトは文字列"{":{"b":"c"}に変換する必要があります.
✓オブジェクトは文字列"{":"b","c"}に変換する必要があります.
✓オブジェクトは、文字列[]:[a]:[b]}、[c]:[d]}]に変換する必要があります.
✓オブジェクトは文字列"{":[]、「c」:{}、「b」:true}に変換する必要があります.
✓関数と未定義の文字列は存在しません.
if(typeof obj === "object"){
let result = "";
for(let key in obj) {
if(obj[key] === undefined || typeof obj[key] === "function"){
result = String(result);
} else {
result += `${stringifyJSON(key)}:${stringifyJSON(obj[key])},`;
}
}
result = result.substr(0, result.length -1);
return `{${result}}`
}
substrメソッド関連リンク
object(オブジェクト)を直接文字で表すと、object objectはこのように現れます.
結果コード
function stringifyJSON(obj) {
if(obj === null){
return "null";
}
if (typeof obj === "number"){
return String(obj);
}
if(typeof obj === "boolean"){
return String(obj);
}
if(typeof obj === "string"){
return `"${obj}"`
}
if(Array.isArray(obj)){
let newArr = [];
obj.forEach(function (ele){
newArr.push(stringifyJSON(ele))
})
return `[${newArr}]`
}
if(typeof obj === "object"){
let result = "";
for(let key in obj) {
if(obj[key] === undefined || typeof obj[key] === "function"){
result = String(result);
} else {
result += `${stringifyJSON(key)}:${stringifyJSON(obj[key])},`;
}
}
result = result.substr(0, result.length -1);
return `{${result}}`
}
// your code goes here
};
ソース:コードステータスReference
この問題について(StringifyJSON(実験)), 我々は、より多くの情報をここで見つけました https://velog.io/@jelkov/StringifyJSON-실습テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol