>  기사  >  백엔드 개발  >  javascript - JSON.parse()는 반환된 배열을 키 값으로 정렬합니까? 정렬되지 않게 만드는 방법

javascript - JSON.parse()는 반환된 배열을 키 값으로 정렬합니까? 정렬되지 않게 만드는 방법

WBOY
WBOY원래의
2016-08-25 10:37:303767검색

백그라운드에서 정렬된 배열을 직렬화하여 프런트 데스크에 전달합니다. 전송 시 프런트 데스크는 키 값에 따라 자동으로 결과를 정렬합니다. 값을 가져와야 합니다. 다음으로 정렬되지 않은 값을 만드는 방법은 무엇입니까? 더 많은 조언 부탁드립니다

javascript - JSON.parse()는 반환된 배열을 키 값으로 정렬합니까? 정렬되지 않게 만드는 방법
위가 올바른 순서이고, 다음은 json.parse() 이후의 순서입니다. 제가 표현을 잘 못한 것 같습니다

답글 내용:

백그라운드에서 정렬된 배열을 직렬화하여 프런트 데스크에 전달합니다. 전송 시 프런트 데스크는 키 값에 따라 자동으로 결과를 정렬합니다. 값을 가져와야 합니다. 다음으로 정렬되지 않은 값을 만드는 방법은 무엇입니까? 더 많은 조언 부탁드립니다

javascript - JSON.parse()는 반환된 배열을 키 값으로 정렬합니까? 정렬되지 않게 만드는 방법
위가 올바른 순서이고, 다음은 json.parse() 이후의 순서입니다. 제가 표현을 잘 못한 것 같습니다

JSON.parse는 객체를 생성하며 객체의 키는 순서가 없습니다.

JavaScript 개체는 실제로 순서가 없으며 HASH 및 기타 이유로 인해 키 값을 기준으로 정렬된 것처럼 보일 수 있습니다.

순서대로 배열을 반환하는 경우 순서가 잘못되어서는 안 됩니다. 순서가 잘못된 경우 키-값 쌍 개체를 반환할 가능성이 높습니다. 테스트 코드를 제공합니다.

<code class="javascript">// 随机生成 data
let data = [];
for (var i = 0; i < 10; i++) {
    let textOrder = ~~(Math.random() * 10000).toString();
    textOrder = `000${textOrder}`;
    textOrder = textOrder.substr(textOrder.length - 4);

    data.push({
        key: ~~(Math.random() * 1000),
        text: `text${textOrder}`
    });
}

// 按 text 排序
data.sort((a, b) => {
    let ta = a.text;
    let tb = b.text;
    return ta < tb ? -1 : (ta > tb ? 1 : 0);
});

// 生成 JSON
var json = JSON.stringify(data);
console.log(json);

// parse
console.log(JSON.parse(json));</code>

보충제

PHP에 익숙하지 않아서 이렇게 처리해야 할 것 같습니다

<code class="php">$data = array(20=>'a',10=>'b');
echo json_encode($data);
// {"20":"a","10":"b"}
// 上面是原来的输出结果

$list = [];
foreach ($data as $k => $v) {
    array_push($list, array("key" => $k, "value" => $v));
}
echo json_encode($list);
[{"key":20,"value":"a"},{"key":10,"value":"b"}]</code>

이렇게 얻은 JSON은 원래 순서대로 배열로 파싱됩니다.

JSON.parse는 시퀀스를 엉망으로 만들지 않습니다. 프런트 엔드에 작성한 내용은 Map과 유사한 json 구조인 {key1: value1, key2: value2}인 것 같습니다. 그런 것이므로 Object.keys ()를 사용하십시오. 이것은 당신이 언급한 장애로 이어질 것입니다. [{key: value}, {key: value}, {key: value}] 등 직접 순회할 수 있는 구조를 반환하는 것이 좋습니다.

JSON.parse "{}" 문자열을 객체로 변환하는 것 같아요

배열의 프론트엔드에서 JSON.parse를 사용하는 순서는 바뀌면 안 되는데, 질문의 의미를 이해하지 못하셨나요?

포스터를 프런트에서 for...of...로 사용하고 싶다면 어쩔 수 없는 것 같아요

직접 무작위로 선택하세요

키 값을 문자열로 변환하면 정렬되지 않습니다.

참조: http://php.net/manual/zh/func...
옵션 상수에 집중

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.