서버에서 JSON 응답으로 다시 오는 이와 같은 객체가 있습니다.
{"0":"1","1":"2","2":"3","3":"4"}
다음과 같이 JavaScript 배열로 변환하고 싶습니다.
["1","2","3","4"]
가장 좋은 방법이 있습니까? 내가 읽는 곳마다 사람들은 루프를 사용하여 복잡한 논리를 사용하고 있습니다. 이 작업을 수행하는 다른 방법이 있습니까?
서버에서 JSON 응답으로 다시 오는 이와 같은 객체가 있습니다.
{"0":"1","1":"2","2":"3","3":"4"}
다음과 같이 JavaScript 배열로 변환하고 싶습니다.
["1","2","3","4"]
가장 좋은 방법이 있습니까? 내가 읽는 곳마다 사람들은 루프를 사용하여 복잡한 논리를 사용하고 있습니다. 이 작업을 수행하는 다른 방법이 있습니까?
답변:
실제로 jQuery와 매우 직설적입니다. $.map
var arr = $.map(obj, function(el) { return el });
jQuery를 사용하지 않고도 키를 배열로 변환 한 다음 값을 다시 매핑하면 거의 쉽게 Array.map
var arr = Object.keys(obj).map(function(k) { return obj[k] });
그것은 이미 자바 스크립트 객체로 구문 분석되었으며 실제로 문자열 형식 인 JSON이 아니라고 가정합니다.이 경우 실행 JSON.parse
도 필요합니다.
ES2015에는 Object.values
구조가있어 바람이 불고 있습니다.
var arr = Object.values(obj);
"JSON 객체"와 같은 것은 없습니다. JSON은 직렬화 표기법입니다.
자바 스크립트 객체 를 자바 스크립트 배열 로 변환 하려면 자신 만의 루프를 작성하거나 (복잡하지는 않습니다!) underscore.js _.toArray()
메소드를 사용합니다.
var obj = {"0":"1","1":"2","2":"3","3":"4"};
var yourArray = _(obj).toArray();
여기서 어려운 것은 없습니다. 객체 요소를 반복하여 배열에 할당
var obj = {"0":"1","1":"2","2":"3","3":"4"};
var arr = [];
for (elem in obj) {
arr.push(obj[elem]);
}
내가 여기서 잃어버린 것을 확실하지 않지만 단순히 아래 코드를 시도하면 효과가 있습니다. 여기에 빠진 것이 있습니까?
https://jsfiddle.net/vatsalpande/w3ew5bhq/
$(document).ready(function(){
var json = {
"code" :"1",
"data" : {
"0" : {"id":"1","score":"44"},
"1" : {"id":"1","score":"44"}
}
};
createUpdatedJson();
function createUpdatedJson(){
var updatedJson = json;
updatedJson.data = [updatedJson.data];
$('#jsondata').html(JSON.stringify(updatedJson));
console.log(JSON.stringify(updatedJson));
}
})
다음과 같은 가치가 있다고 가정
var obj = {"0":"1","1":"2","2":"3","3":"4"};
그런 다음 다음을 사용하여 이것을 자바 스크립트 배열로 바꿀 수 있습니다
var arr = [];
json = JSON.stringify(eval('(' + obj + ')')); //convert to json string
arr = $.parseJSON(json); //convert to javascript array
이것은 json을 multi-diminsional javascript arrays로 변환하는데도 효과적입니다.
이 페이지의 다른 방법은 여기에 언급 한 방법을 제외하고 PHP JSON 인코딩 문자열로 작업 할 때 완전히 작동하지 않는 것 같습니다.
var data = [];
data = {{ jdata|safe }}; //parse through js
var i = 0 ;
for (i=0;i<data.length;i++){
data[i] = data[i].value;
}
$data='{"resultList":[{"id":"1839","displayName":"Analytics","subLine":""},{"id":"1015","displayName":"Automation","subLine":""},{"id":"1084","displayName":"Aviation","subLine":""},{"id":"554","displayName":"Apparel","subLine":""},{"id":"875","displayName":"Aerospace","subLine":""},{"id":"1990","displayName":"Account Reconciliation","subLine":""},{"id":"3657","displayName":"Android","subLine":""},{"id":"1262","displayName":"Apache","subLine":""},{"id":"1440","displayName":"Acting","subLine":""},{"id":"710","displayName":"Aircraft","subLine":""},{"id":"12187","displayName":"AAC","subLine":""}, {"id":"20365","displayName":"AAT","subLine":""}, {"id":"7849","displayName":"AAP","subLine":""}, {"id":"20511","displayName":"AACR2","subLine":""}, {"id":"28585","displayName":"AASHTO","subLine":""}, {"id":"45191","displayName":"AAMS","subLine":""}]}';
$b=json_decode($data);
$i=0;
while($b->{'resultList'}[$i])
{
print_r($b->{'resultList'}[$i]->{'displayName'});
echo "<br />";
$i++;
}
Object.assign()
빈 배열 리터럴 []
을 다음 target
과 같이 사용할 수 있습니다 .
const input = {
"0": "1",
"1": "2",
"2": "3",
"3": "4"
}
const output = Object.assign([], input)
console.log(output)
당신이 선택하면 polyfill을 , Object.assign(target, ...sources)
단지 복사에서 모든 열거 자신의 속성 source
대상 객체에 대한 객체. (가) 경우 target
배열, 그것은 배열 문자에 숫자 키를 추가하고 그 반환 target
배열 객체를.