如果我有一个JS对象:

var foo = { 'bar' : 'baz' }

如果我知道foo有基本的键/值结构,但不知道键的名称,我怎么能得到它?为…在吗?$ . each () ?


当前回答

易读且简单的解决方案:

Const object1 = { 首先:“我是第一个”, second:“我是第二名” }; for (const [key, value] of Object.entries(object1)) { console.log(“${关键}:$ {value}”); } //期望输出: // "我是第一个" // "second: I am second"

其他回答

如果你想获得所有的键,ECMAScript 5引入了Object.keys。这只有较新的浏览器支持,但MDC文档提供了另一种实现(它也用于…顺便说一句):

if(!Object.keys) Object.keys = function(o){
     if (o !== Object(o))
          throw new TypeError('Object.keys called on non-object');
     var ret=[],p;
     for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
     return ret;
}

当然,如果你同时需要键和值,那么for。是唯一合理的解决办法。

你可以用for循环在对象内部迭代:

for(var i in foo){
  alert(i); // alerts key
  alert(foo[i]); //alerts key's value
}

Or

Object.keys(foo)
  .forEach(function eachKey(key) { 
    alert(key); // alerts key 
    alert(foo[key]); // alerts value
  });

你可以使用Object。按键功能,获得按键如下:

const tempObjects={foo:"bar"}

Object.keys(tempObjects).forEach(obj=>{
   console.log("Key->"+obj+ "value->"+tempObjects[obj]);
});

给定你的对象:

var foo = { 'bar' : 'baz' }

获取bar,使用:

Object.keys(foo)[0]

要获得baz,请使用:

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

假设只有一个对象

除了……没有别的办法了。在。如果你不想使用它(可能是因为在每次迭代中测试hasOwnProperty的效率很低?),那么使用一个不同的构造,例如kvp的数组:

[{ key: 'key', value: 'value'}, ...]