admin管理员组

文章数量:1135173

Ok so let's say that I have my object

myobj = {"A":["Abe"], "B":["Bob"]}

and I want to get the first element out of it. As in I want it to return Abe which has an index of A. How can I do something along the lines of myobj[0] and get out "Abe".

Ok so let's say that I have my object

myobj = {"A":["Abe"], "B":["Bob"]}

and I want to get the first element out of it. As in I want it to return Abe which has an index of A. How can I do something along the lines of myobj[0] and get out "Abe".

Share Improve this question edited Sep 13, 2018 at 0:18 pashute 4,0534 gold badges42 silver badges67 bronze badges asked Feb 10, 2013 at 20:55 ChapmIndustriesChapmIndustries 1,5314 gold badges17 silver badges19 bronze badges 3
  • You can't, reliably; there's no guarantee of the order of the properties stored in an object. – David Thomas Commented Feb 10, 2013 at 20:57
  • 1 Can you construct an example that isn't ambiguous? Which B is important here? – Eric Commented Feb 10, 2013 at 20:59
  • 1 I constructed the example the way it should have been written. – pashute Commented Sep 12, 2018 at 19:45
Add a comment  | 

9 Answers 9

Reset to default 115

I know it's a late answer, but I think this is what OP asked for.

myobj[Object.keys(myobj)[0]];

JS objects have no defined order, they are (by definition) an unsorted set of key-value pairs.

If by "first" you mean "first in lexicographical order", you can however use:

var sortedKeys = Object.keys(myobj).sort();

and then use:

var first = myobj[sortedKeys[0]];
myobj = {"A":["Abe"], "B":["Bob"]}

Object.keys(myobj)[0];  //return the key name at index 0
Object.values(myobj)[0]  //return the key values at index 0

You could try

    Object.entries(myobj)[0]
var myobj = {"A":["Abe"], "B":["Bob"]};

var keysArray = Object.keys(myobj);

var valuesArray = Object.keys(myobj).map(function(k) {

   return String(myobj[k]);

});

var mydata = valuesArray[keysArray.indexOf("A")]; // Abe
myobj.A

------- or ----------

myobj['A']

will get you 'B'

Try:

const obj = {
    name: 'John Doe',
    age: 34,
    country: 'Switzerland',
};

var _key = Object.keys(obj)[0]
var _value = Object.values(obj)[0]
var key = Object.entries(obj)[0][0]
var value = Object.entries(obj)[0][1]

console.log(_key)
console.log(_value)
console.log(key)
console.log(value)
$.each(myobj, function(index, value) { 
    console.log(myobj[index]);
});

If you want a specific order, then you must use an array, not an object. Objects do not have a defined order.

For example, using an array, you could do this:

var myobj = [{"A":["B"]}, {"B": ["C"]}];
var firstItem = myobj[0];

Then, you can use myobj[0] to get the first object in the array.

Or, depending upon what you're trying to do:

var myobj = [{key: "A", val:["B"]}, {key: "B",  val:["C"]}];
var firstKey = myobj[0].key;   // "A"
var firstValue = myobj[0].val; // "["B"]

本文标签: javascriptGet element of JS object with an indexStack Overflow