このようなオブジェクトがサーバーからの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] });
これは、JavaScriptオブジェクトとして既に解析されており、実際には文字列形式であるJSONではないことを前提としています。その場合、実行JSON.parse
も必要になります。
ES2015にObject.values
は救出があり、これは簡単です
var arr = Object.values(obj);
「JSONオブジェクト」のようなものは何もありません-JSONはシリアル化表記です。
JavaScriptオブジェクトをJavaScript配列に変換したい場合は、独自のループを作成するか(それほど複雑ではありません!)、または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"};
次に、これを次を使用してjavascript配列に変換できます
var arr = [];
json = JSON.stringify(eval('(' + obj + ')')); //convert to json string
arr = $.parseJSON(json); //convert to javascript array
これは、jsonを複数の小さなJavaScript配列に変換するためにも機能します。
このページの他のメソッドは、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)
あなたがチェックした場合はポリフィルを、Object.assign(target, ...sources)
単にコピーからすべて列挙独自のプロパティsource
ターゲット・オブジェクトへのオブジェクト。target
が配列の場合、数値キーを配列リテラルに追加し、そのtarget
配列オブジェクトを返します。