다음 문자열에서 작동하는 메서드를 작성하고 규칙을 찾고 해당 결과를 반환합니다.

최근에는 교육을 이수한 소상공인들이 취업을 위해 많이 나오며 필기시험 문제를 접하기가 어렵다고 합니다. 질문이 있습니다. 많은 사람들이 저에게 요청했습니다. 어떤 질문입니까? 한 번 보자

var str1 = "http://test.com?foo=active@987df&key=123&key=78";

var str2 = "http://test.com?too=last@4567&key=555&value=test";

function show(){}, 함수 show를 캡슐화하자

print show(str1); //결과 반환 {foo:'active',key:[123,78]}

Print show(str2); //결과 반환 {too:'last',key:555,value:'test'}

우선 이 문제를 만났을 때 일련의 배열 문자열 API를 생각하고 문자열을 "?"로 배열로 나눈 다음 다음 부분을 보고 "&"를 사용하여 구분해야 합니다. 결과의 숫자는 문자열이 될 수 없으며 획득한 디지털 문자열을 숫자 유형으로 변환해야 합니다.

한마디로 여기에서 "=" 앞의 키와 값을 배열로 취한 다음 하나씩 추가합니다. 마지막으로 배열의 길이가 1이면 toString()을 사용하고 숫자이면 다음 번호

다른 것 외에도 코드로 이동하겠습니다.

함수 표시(str) {

            let s = str.split('?')[1];      //가져오기 foo=active@987df&key=123&key=78

           // s를 &로 구분

            let arr = s.split("&");        // 배열 가져오기 ['foo=active@987df', 'key=123', 'key=78']

            // 키-값 쌍을 담을 빈 객체를 선언합니다.

            let obj = {};

            // arr을 통해 반복하고 '=' 앞에 있는 각 항목을 키로 개체에 넣은 다음 배열에 넣습니다.

            for (let j = 0; j < arr.length; j++) {

                let char = arr[j].split("=")[0];

                let charV = arr[j].split("=")[1];

                if (obj[char] == 정의되지 않음) {

                    //숫자로 조합

                    객체[문자] = [];

                     //@가 있는지 판단 삼항연산자를 이용한 바닥봉인 방식입니다.

                    obj[char].push(judge(charV) ? charV.split("@")[0] : charV)

                } 또 다른 {

                    obj[문자].푸시(문자V)

                }

            }

            //객체 순회, 값의 길이가 1이면 배열이 아닌 문자열로 변환

            for (obj에서 k를 보자) {

                if (obj[k].길이 == 1) {

                   //숫자로의 변환이 NaN이 아닌지 판단

                    //[555]와 유사

                    if (!isNaN(Number(obj[k][0]))) {

                        obj[k] = 숫자(obj[k].toString())

                    } 또 다른 {

                        obj[k] = obj[k].toString()

                    }

                } 또 다른 {

                    for (obj[k]에서 j를 보자) {

                        if (!isNaN(Number(obj[k][j]))) {

                            객체[k][j] = 숫자(obj[k][j])

                        }

                    }

                }

            }

            객체 반환

        }

        // 문자열에 @가 있는지 여부를 결정하는 캡슐화 방법

        함수 판단(str) {

           //새로운 @ES6 문자열이 있는지 여부를 반환합니다.

            return str.includes("@");

        }

        console.log(show(str1));

        console.log(show(str2));

おすすめ

転載: blog.csdn.net/weixin_68067009/article/details/124787840