繁体   English   中英

如何获取key/value的key JavaScript object

[英]How to get the key of a key/value JavaScript object

如果我有一个 JS object 像:

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

如果我知道foo具有基本的键/值结构,但不知道键的名称,我怎样才能得到它? for... in $.each()

您将使用 for 循环在 object 内部进行迭代:

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

或者

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

您可以单独访问每个键而无需迭代,如下所示:

var obj = { first: 'someVal', second: 'otherVal' };
alert(Object.keys(obj)[0]); // returns first
alert(Object.keys(obj)[1]); // returns second

如果要获取所有密钥, ECMAScript 5 引入了Object.keys 这仅由较新的浏览器支持,但MDC 文档提供了一种替代实现(顺便说一句,它也for...in ):

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...in是唯一合理的解决方案。

鉴于您的 Object:

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

要获取bar ,请使用:

Object.keys(foo)[0]

要获得baz ,请使用:

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

假设单个 object

这是最简单和容易的方法。 这就是我们这样做的方式。

 var obj = { 'bar': 'baz' } var key = Object.keys(obj)[0]; var value = obj[key]; console.log("key = ", key) // bar console.log("value = ", value) // baz
Object.keys() 是 javascript 方法,它在对象上使用时返回一个键数组。

Object.keys(obj).forEach( function(key) {
  console.log(obj[key]) // baz
})

现在您可以迭代对象并可以访问如下值 -

 Object.keys(obj).forEach( function(key) { console.log(obj[key]) // baz })

为您打造的单人班轮

const OBJECT = {
    'key1': 'value1',
    'key2': 'value2',
    'key3': 'value3',
    'key4': 'value4'
};

const value = 'value2';

const key = Object.keys(OBJECT)[Object.values(OBJECT).indexOf(value)];

window.console.log(key); // = key2
// iterate through key-value gracefully
const obj = { a: 5, b: 7, c: 9 };
for (const [key, value] of Object.entries(obj)) {
  console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
}

参考 MDN

我遇到了同样的问题,这就是有效的

//example of an Object
var person = {
    firstName:"John",
    lastName:"Doe",
    age:50,
    eyeColor:"blue"
};

//How to access a single key or value
var key = Object.keys(person)[0];
var value = person.firstName;

获取 object 的键/值的最佳方法。

 let obj = { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4' } Object.keys(obj).map(function(k){ console.log("key with value: "+k +" = "+obj[k]) })

除了for (var key in foo)之外,我什么也没看到。

最简单的方法是只使用 Underscore.js:

钥匙

_.keys(object) 检索对象属性的所有名称。

_.keys({一:1,二:2,三:3}); => [“一”,“二”,“三”]

是的,您需要一个额外的库,但这很简单!

用于每个循环以访问 Object 中的键或 javascript 中的映射

for(key in foo){
   console.log(key);//for key name in your case it will be bar
   console.log(foo[key]);// for key value in your case it will be baz
}

注意:你也可以使用

Object.keys(foo);

它会给你这样的 output:

[酒吧];

Object.keys() Object.keys() 方法返回给定对象自己的可枚举属性的数组,其顺序与 for...in 循环提供的顺序相同(不同之处在于 for-in 循环枚举属性在原型链中也是如此)。

var arr1 = Object.keys(obj);

Object.values() Object.values() 方法返回给定对象自己的可枚举属性值的数组,其顺序与 for...in 循环提供的顺序相同(区别在于 for-in 循环枚举原型链中的属性)。

var arr2 = Object.values(obj);

如需更多信息,请点击此处go

除了for... in之外,别无他法。 如果您不想使用它(可能是因为必须在每次迭代中测试hasOwnProperty效率很低?)然后使用不同的构造,例如 kvp 数组:

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

既然您提到$.each() ,这是一种适用于 jQuery 1.6+ 的便捷方法:

var foo = { key1: 'bar', key2: 'baz' };

// keys will be: ['key1', 'key2']
var keys = $.map(foo, function(item, key) {
  return key;
});

您可以使用 Object.keys 功能来获取以下密钥:

const tempObjects={foo:"bar"}

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

$.each是一个库结构,而for... in是原生 js,应该更好

要显示为字符串,只需使用:

console.log("they are: " + JSON.stringify(foo));

如果您使用的是AWS CloudFront 函数,那么这对您有用。

function handler(event) {
    var response = event.response;
    var headers = response.headers;
    if("x-amz-meta-csp-hash" in headers){ 
        hash=headers["x-amz-meta-csp-hash"].value;
        console.log('hash is ' + hash);
    }
}

您好,请验证您在 pretagteams.com 上的所有答案如何在 JavaScript 中获取对象的键和值

const object1 = {
   a: 'somestring',
   b: 42
}
Object.entries(object1) // Array(2) [["a", "something"], ["b", 42]]
   .forEach(([key, value]) => console.log(`${key}: ${value}`))
// "a: somestring"
// "b: 42"

可读且简单的解决方案:

 const object1 = { first: 'I am first', second: 'I am second' }; for (const [key, value] of Object.entries(object1)) { console.log(`${key}: ${value}`); } // expected output: // "first: I am first" // "second: I am second"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM