सवाल जावास्क्रिप्ट में ऑब्जेक्ट {} से सरणी [] में कनवर्ट करें


मैं किसी ऑब्जेक्ट को कैसे परिवर्तित कर सकता हूं

{"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}

इस तरह दिखने वाली एक सरणी में:

[[1,5],[2,7],[3,0],[4,0]...].

मुझे इसे फ्लोट चार्ट लाइब्रेरी में एकीकृत करने की आवश्यकता है जो केवल इस प्रकार के डेटा का समर्थन करता है जो सरणी है।


59
2017-08-08 08:21


मूल


var obj = {"1": 5, "2": 7, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, "9": 0, "10": 0, "11": 0, "12": 0} सबसे अच्छा तरीका है, Object.values ​​(obj); - Pila


जवाब:


आप उपयोग कर सकते हैं Object.keys() तथा map() यह करने के लिए

var obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}
var result = Object.keys(obj).map(function(key) {
  return [Number(key), obj[key]];
});

console.log(result);


127
2017-08-08 08:24



हाँ.यह मेरी समस्या का समाधान था। धन्यवाद! - Soptareanu Alex
आपका स्वागत है। - Nenad Vracar
लघु, "वेनिला", वास्तव में एक बहुत अच्छा जवाब है। - evolutionxbox
वेनिला बहुत अच्छा है लेकिन संगतता के बारे में जागरूक होना बेहतर है: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/... - Christophe Roussy


सबसे अच्छा तरीका है:

var obj ={"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10"‌​:0,"11":0,"12":0} 
Object.values(obj);

43
2018-05-14 21:57



सरल। इसे प्यार करना। - Jacksonkr
सावधान रहें! Object.values ​​() केवल आधुनिक ब्राउज़रों पर उपलब्ध है। विस्तार लिंक: developer.mozilla.org/en/docs/Web/JavaScript/Reference/... - qmn1711
मूल्यों को प्राप्त करने के लिए यह अच्छा समाधान है, लेकिन जैसा सवाल अभी बनाया गया है, यह [कुंजी, मूल्य] जोड़े वापस नहीं करता है - Jurosh
2017 अपडेट करें, कोई भी आधुनिक आधुनिक ब्राउज़र की परवाह नहीं करता है - SuperUberDuper
@SuperUberDuper: जब तक आप Lambda के लिए नोडजेएस नहीं कर रहे हैं, इस मामले में आप नोड 6.10 पर फंस गए हैं, जो ऑब्जेक्ट.वल्यूज़ () :( का समर्थन नहीं करता है :( इस मामले में, इस मामले में Object.keys(obj).map(k => obj[k]) काम करता है। - Jeppe Mariager-Lam


जैसा कि आप नीचे दिए गए उदाहरण से देख सकते हैं, Object.entries फ़ंक्शन लगभग सटीक आउटपुट देता है जो आप पूछ रहे हैं सिवाय इसके कि चाबियाँ संख्याओं के बजाय तार हैं।

const obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};

console.log(Object.entries(obj));

यदि आपको संख्या होने की कुंजी की आवश्यकता है, तो एक साधारण मानचित्र कॉल पर्याप्त होगा:

const obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};

console.log(Object.entries(obj).map(e => Object.assign(e, { 0: +e[0] })));


18
2018-06-27 22:28



मुझे कार्यात्मक दृष्टिकोण पसंद है। एक छोटे से विकल्प के रूप में: Object.entries(obj).map(e => [+e[0], e[1]]); - Travis Clarke
@ ट्रेविस धन्यवाद। एकमात्र कारण मैंने उस दृष्टिकोण का उपयोग नहीं किया क्योंकि यह प्रत्येक प्रविष्टि के लिए एक नई सरणी बनाता है, जबकि मेरे द्वारा उपयोग किया जाने वाला दृष्टिकोण केवल एक नई सरणी (मानचित्र कॉल का उत्पाद) बनाता है। हालांकि यह शायद एक माइक्रो-अनुकूलन है। - Tiny Giant
अच्छी बात! डेटा की मात्रा के आधार पर, यह माइक्रो-अनुकूलन आवश्यक हो सकता है। स्पष्टीकरण के लिए धन्यवाद। - Travis Clarke


उपयोग Object.keys तथा Array#map तरीकों।

var obj = {
  "1": 5,
  "2": 7,
  "3": 0,
  "4": 0,
  "5": 0,
  "6": 0,
  "7": 0,
  "8": 0,
  "9": 0,
  "10": 0,
  "11": 0,
  "12": 0
};
// get all object property names
var res = Object.keys(obj)
  // iterate over them and generate the array
  .map(function(k) {
    // generate the array element 
    return [+k, obj[k]];
  });

console.log(res);


4
2017-08-08 08:25





फिर भी एक और बदलाव जो आप उपयोग कर सकते हैं Object.values तुम्हारे लिए काम नहीं करेगा

var obj = {
  foo: 29,
  bar: 42
};
var arr = Array.from(Object.keys(obj), k=>obj[k]);

4
2017-08-22 15:50





यदि आप लॉनाश का उपयोग कर रहे हैं, तो यह उतना आसान हो सकता है:

var arr = _.values(obj);

2
2018-03-02 07:58





Lodash के साथ, ऊपर दिए गए उत्तर के अलावा, आप आउटपुट सरणी में भी कुंजी प्राप्त कर सकते हैं।

आउटपुट सरणी में ऑब्जेक्ट कुंजी के बिना

के लिये:

const array = _.values(obj);

यदि ओबीजे निम्नलिखित है:

{ “art”: { id: 1,  title: “aaaa” }, “fiction”: { id: 22,  title: “7777”} }

फिर सरणी होगी:

[ { id: 1, title: “aaaa” }, { id: 22, title: “7777” } ]

आउटपुट सरणी में ऑब्जेक्ट कुंजी के साथ

यदि आप इसके बजाय लिखते हैं ('शीर्षक' एक स्ट्रिंग है जिसे आप चुनते हैं):

const array= _.map(obj, (val, id) => {
    return { ...val, title: key };
  });

तुम्हे मिल जाएगा:

[ 
  { id: 1, title: “aaaa” , title: “art”}, 
  { id: 22, title: “7777”, title: “fiction” }
]

1
2018-06-08 08:55





उपयोग Object.entries ऑब्जेक्ट के प्रत्येक तत्व को प्राप्त करने के लिए key & value प्रारूप, फिर map उनके माध्यम से इस तरह:

var obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}

var res = Object.entries(obj).map(([k, v]) => ([Number(k), v]));

console.log(res);

लेकिन, अगर आप निश्चित हैं कि चाबियाँ होंगी प्रगतिशील आदेश आप उपयोग कर सकते हैं Object.values तथा Array#map ऐसा कुछ करने के लिए:

var obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}; 

                        // idx is the index, you can use any logic to increment it (starts from 0)
let result = Object.values(obj).map((e, idx) => ([++idx, e]));

console.log(result);


0
2017-08-06 07:51





उपयोग अंदर के लिए

var obj = { "10":5, "2":7, "3":0, "4":0, "5":0, "6":0, "7":0,
            "8":0, "9":0, "10":0, "11":0, "12":0 };

var objectToArray = function(obj) {
    var _arr = [];

    for (var key in obj) {
        _arr.push([key, obj[key]]);
    }
    return _arr;
}

console.log(objectToArray(obj));

-1
2017-09-01 19:08





आवर्ती वस्तु को सरणी में परिवर्तित करें

function is_object(mixed_var) {
    if (mixed_var instanceof Array) {
        return false;
    } else {
        return (mixed_var !== null) && (typeof( mixed_var ) == 'object');
    }
}


function objectToArray(obj) {
    var array = [], tempObject;
    for (var key in obj) {

        tempObject = obj[key];

        if (is_object(obj[key])) {
            tempObject = objectToArray(obj[key]);
        }
        array[key] = tempObject;
    }
    return array;
}

-1
2017-11-15 10:11





Ecmascript 6 में,

var obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};

var res = Object.entries(obj).map((value)=>(value));

console.log(res);

बेला


-2
2017-08-08 12:21