জাভাস্ক্রিপ্ট অবজেক্টকে সংখ্যাসূচক কী দিয়ে অ্যারেতে রূপান্তর করা


175

সার্ভার থেকে জেএসওএন প্রতিক্রিয়া হিসাবে ফিরে আসার মতো আমার একটি বিষয় রয়েছে:

{"0":"1","1":"2","2":"3","3":"4"}

আমি এটিকে একটি জাভাস্ক্রিপ্ট অ্যারে রূপান্তর করতে চাই:

["1","2","3","4"]

এটি করার সর্বোত্তম উপায় আছে? আমি যেখানেই পড়ছি, লোকেরা লুপগুলি ব্যবহার করে জটিল যুক্তি ব্যবহার করছে। সুতরাং এটি করার বিকল্প উপায় আছে?



8
নিছক লুপটি কোনও জটিল যুক্তি নয় , উপায় দ্বারা)))
মুনউইভ৯৯

উত্তর:


328

এটি 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.parseপ্রয়োজনীয় হবে।

ES2015 Object.valuesএ উদ্ধার আছে, যা এটি বাতাস তৈরি করে

var arr = Object.values(obj);

1
@ অ্যাডিনিও স্যার দয়া করে এইচটিএস পদ্ধতি সম্পর্কে কিছু ব্যাখ্যা সরবরাহ করতে পারেন।
নিখিল অগ্রওয়াল

1
@ অ্যাডেনিও ওরফে মিঃ জ্বলুন ... এই দ্রুত সমাধানের জন্য ধন্যবাদ Thanks
Dzeimsas Zvirblis

1
@ নিখিলআগ্রাওয়াল এখানে কৌশলটি অবজেক্ট.কিজ () ব্যবহার করা হয়েছে, যা বস্তুর কীগুলি (= তার নিজস্ব সংখ্যাযুক্ত বৈশিষ্ট্য) অ্যারে হিসাবে ফেরত দেয় । তারপরে আমরা প্রতিটি কীটি একটি নতুন অ্যারেতে সম্পর্কিত মান দ্বারা প্রতিস্থাপন করতে অ্যারে.ম্যাপ ব্যবহার করতে পারি।
এন্টোইন

1
এটি একটি উত্তর, তবে খুব বন্ধুত্বপূর্ণ নয়।
শেরিফডেরেক

1
প্রশ্নটি সুস্পষ্ট ছিল না, তবে আমি ধরে নিয়েছিলাম যে অবজেক্টের কীগুলি প্রকৃতির প্রকৃতির (0,1,2,3) দ্বারা অ্যারের সূচক হয়। কেবল নির্দেশ করে যে লোকেরা জানতে হবে যে এই পদ্ধতিটি অ্যারেতে কোনও আদেশের গ্যারান্টি দেয় না; কীগুলি যদি সূচক হয় তবে আপনার স্পষ্টভাবে আদেশ করতে হবে যাতে অ্যারেটি সঠিক ক্রমে নির্মিত হয় built
leejt489

107
var json = '{"0":"1","1":"2","2":"3","3":"4"}';

var parsed = JSON.parse(json);

var arr = [];

for(var x in parsed){
  arr.push(parsed[x]);
}

আশা করি এটি আপনার পরে কি!


ধন্যবাদ। সত্যিই এটি প্রয়োজন ছিল। কেউ কেউ এক টন কোড জুড়ে অ্যারে হিসাবে একটি অবজেক্ট ব্যবহার করেছিলেন, যা তার উপরে তৈরি করার দরকার না হওয়া পর্যন্ত ঠিক ছিল ...
আমন্ডা

ধন্যবাদ! নিখুঁত উত্তর.
ভিনসেন্ট

আমার যেটুকু ধন্যবাদ দরকার ছিল তার খুব কাছাকাছি: (আর জন্য [এক্স x ডেটা) r আরআর [এক্স] = ডেটা [এক্স]; }
অ্যান্ড্রু

24

আপনি কেবল এটি পছন্দ করেন

var data = {
    "0": "1",
    "1": "2",
    "2": "3",
    "3": "4"
};
var arr = [];
for (var prop in data) {
    arr.push(data[prop]);
}
console.log(arr);

ডেমো


20

"JSON অবজেক্ট" এর মতো কিছুই নেই - জেএসএন হ'ল সিরিয়ালাইজেশন স্বরলিপি।

আপনি যদি নিজের জাভাস্ক্রিপ্ট অবজেক্টটিকে একটি জাভাস্ক্রিপ্ট অ্যারে রূপান্তর করতে চান তবে হয় আপনি নিজের লুপটি লিখেন [যা জটিল হবে না!], অথবা আপনি আন্ডারস্কোর.জেএস _.toArray() পদ্ধতিতে নির্ভর করেন :

var obj = {"0":"1","1":"2","2":"3","3":"4"};
var yourArray = _(obj).toArray();

1
ধন্যবাদ - মোহন মত কাজ করে। তবে কীভাবে এটি অভ্যন্তরীণ বস্তুগুলির জন্য একই জিনিস করা যায় (বস্তুর মধ্যে বস্তু)? অভ্যন্তরীণ বস্তুগুলিও মূল স্তরে অ্যারের ফ্ল্যাট সদস্য হওয়া উচিত (যাতে তারা ডেটাবেটস ডটনেট ইত্যাদি প্রেরণ করতে পারে)
গোপালকৃষ্ণ

+1: "" JSON অবজেক্ট "এর মতো কিছুই নেই - জেএসওএন সিরিয়ালাইজেশন স্বরলিপি।" - এটি পুরোপুরি বুঝতে আগে আমাকে কতবার শুনতে হয়েছিল তা আমি বিশ্বাস করতে পারি না।
রেডবিএক্স

9

এখানে কিছু কঠিন। আপনার অবজেক্ট উপাদানগুলির উপর লুপ করুন এবং সেগুলি অ্যারেরে বরাদ্দ করুন

var obj = {"0":"1","1":"2","2":"3","3":"4"};
var arr = [];
for (elem in obj) {
   arr.push(obj[elem]);
}

http://jsfiddle.net/Qq2aM/



4

এটা চেষ্টা কর:

var newArr = [];
$.each(JSONObject.results.bindings, function(i, obj) {
    newArr.push([obj.value]);
});

আপনার সমাধানটি এখানে উপস্থাপিত সকলের থেকে ধীরতম হতে চলেছে ... ব্যবসায়ের কোডের জন্য খারাপ;)
হেলবাবি

3
var obj = {"0":"1","1":"2","2":"3","3":"4"};

var vals = Object.values(obj);

console.log(vals); //["1", "2", "3", "4"]

প্রশ্নের আরেকটি বিকল্প

var vals = Object.values(JSON.parse(obj)); //where json needs to be parsed

2

কাঁচা জাভাস্ক্রিপ্ট ব্যবহার করে মনে করুন আপনার কাছে রয়েছে:

var j = {0: "1", 1: "2", 2: "3", 3: "4"};

আপনি এর সাথে মানগুলি পেতে পারেন:

Object.keys(j).map(function(_) { return j[_]; })

আউটপুট:

["1", "2", "3", "4"]

2

আমি এখানে কী মিস করছি তা নিশ্চিত নন তবে কেবল নীচের কোডটি ব্যবহার করেই কাজ করে। আমি কি এখানে কিছু মিস করছি?

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));
  }
 })

1

আপনার নিম্নলিখিতগুলির মতো একটি মান রয়েছে বলে ধরে নেওয়া হচ্ছে

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

এটি জসনকে বহু-ডাইমেনশনাল জাভাস্ক্রিপ্ট অ্যারেতে রূপান্তর করার জন্যও কাজ করে।

আমি এখানে যে পদ্ধতিটি উল্লেখ করছি তার ব্যতীত পিএইচপি জসন-এনকোডযুক্ত স্ট্রিংয়ের সাথে কাজ করার সময় এই পৃষ্ঠার অন্য কোনও পদ্ধতিরই আমার পক্ষে সম্পূর্ণরূপে কাজ করে না বলে মনে হয়।


1

আপনি কীভাবে বস্তুর অ্যারে পেতে পারেন এবং তারপরে অ্যারেটি বাছাই করতে পারেন তার একটি উদাহরণ এখানে ।

  function osort(obj)
  {  // map the object to an array [key, obj[key]]
    return Object.keys(obj).map(function(key) { return [key, obj[key]] }).sort(
      function (keya, keyb)
      { // sort(from largest to smallest)
          return keyb[1] - keya[1];
      }
    );
  }

0

এটি সেরা সমাধান। আমি তাই মনে করি.

Object.keys(obj).map(function(k){return {key: k, value: obj[k]}})

0
      var data = [];

      data  = {{ jdata|safe }}; //parse through js
      var i = 0 ;
      for (i=0;i<data.length;i++){
         data[i] = data[i].value;
      }

2
এই কোড স্নিপেটের জন্য আপনাকে ধন্যবাদ, যা কিছু সীমিত, তাত্ক্ষণিক সহায়তা সরবরাহ করতে পারে। একটি সঠিক ব্যাখ্যা কেন এটি সমস্যার একটি ভাল সমাধান তা দেখিয়ে তার দীর্ঘমেয়াদী মানকে ব্যাপকভাবে উন্নত করবে এবং ভবিষ্যতে পাঠকদের আরও অন্যান্য অনুরূপ প্রশ্নের সাথে আরও দরকারী করে তুলবে। আপনার অনুমানগুলি সহ কিছু ব্যাখ্যা যুক্ত করতে দয়া করে আপনার উত্তরটি সম্পাদনা করুন।
মোগসদাদ

0

আপনি পিএসপিপি ব্যবহার করে জসন অবজেক্টকে অ্যারে এবং স্ট্রিংয়ে রূপান্তর করতে পারেন।

$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++;
}

প্রশ্ন পিএইচপি নয় জাভাস্ক্রিপ্ট সম্পর্কে।
চার্লস টেলর

-1

আপনি ব্যবহার করতে পারেন 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অ্যারে অবজেক্টটি ফিরিয়ে দেবে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.