怎么取一个对象的第一个值

clipboard.png
后台给传过来这么一个对象,默认值要取第一个,我用for循环一次取出来了,感觉特别low,
你们有没有好一点的办法啊?

阅读 48.6k
13 个回答
Object.values(obj)[0]

obj[Object.keys(obj)[0]]

Object是无序的,我不知道你说的默认取第一个是怎么想的,键值为01那个?

var obj={"01":"w"};
obj["01"]

JS 里面 对象的 多个属性 是无序的。 数组才是有序的, 对象只能通过 键来取值

for循环应该就是最优的了吧

function getObjFirst(obj){
  for(let i in obj) return obj[i];
}

let aObj = {01: 111, 02: 2222};
console.log(getObjFirst(aObj))
var obj={06:"so",08:"me",09:"th",15:"ing"}

obj[Object.keys(obj).sort((a,b)=>a-b)[0]]
/* Object.keys(obj): 输出 obj 里所有 key 组成的数组;
/* .sort((a,b)=>a-b): 从小到大排序
/* [0]: 输出第一个的值。
// 以上操作找出 obj 中最小的 key 的值 (s)
/* obj[s]: 取第一个 */

一行代码,哈哈。
# 参考了 yangge26 的回答

不管是用Object.keys,还是用for(let i in obj),得到的属性的顺序都是无法保证的。

就是循环出来的第一个并不是对象的第一个属性

var an_obj = { 100: 'a', 2: 'b', 7: 'c' };

console.log(Object.keys(an_obj));     // 2, 7 100

for(var i in an_obj) {
    console.log(i);     // 2, 7 100
}

我试过将对象转成字符串,用JSON.stringify,但是发现顺序也还是被变了。。。

转JSON取值不行么?

js里对象是无序的,不同浏览器遍历结果不一样。
怎么取第一个,直接让他发list,否则不保证结果

新手上路,请多包涵

这种有规律的key可以先排序后取值。
const key = Object.keys(obj).sort()[0];
const first = obj[key];

object.first

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏