백그라운드에서 정렬된 배열을 직렬화하여 프런트 데스크에 전달합니다. 전송 시 프런트 데스크는 키 값에 따라 자동으로 결과를 정렬합니다. 값을 가져와야 합니다. 다음으로 정렬되지 않은 값을 만드는 방법은 무엇입니까? 더 많은 조언 부탁드립니다
위가 올바른 순서이고, 다음은 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...
옵션 상수에 집중