Javascript 从密钥获取JSON值

Javascript 从密钥获取JSON值,javascript,arrays,json,undefined,Javascript,Arrays,Json,Undefined,为什么未定义会被记录 var arr = [{"eat" : 0}, {"sleep" : 1}, {"code" : 2}]; var key = "eat"; console.log(arr[key]); 我希望在日志中看到0 首先,我在这里没有看到任何JSON。我看到一个普通的JavaScript数组对象——JSON是一种数据序列化格式 其次,您可能正在查找arr[0],它将返回{“eat”:0} 数组用于存储顺序数据 或者,如果符合您的实际需要,您可以将它们存储在对象中: var ar

为什么未定义会被记录

var arr = [{"eat" : 0}, {"sleep" : 1}, {"code" : 2}];
var key = "eat";
console.log(arr[key]);
我希望在日志中看到
0


首先,我在这里没有看到任何JSON。我看到一个普通的JavaScript数组对象——JSON是一种数据序列化格式

其次,您可能正在查找
arr[0]
,它将返回
{“eat”:0}

数组用于存储顺序数据

或者,如果符合您的实际需要,您可以将它们存储在对象中:

var arr = {"eat" : 0,"sleep" : 1,"code" : 2};
var key = "eat";
console.log(arr[key]);


注意:在更现代的实现中,可能应该使用数组而不是数组。或者使用
Object.create(null)

您得到了一个具有三个属性的数组。它们的名称是“0”、“1”和“2”。这些名称隐式派生自以下事实:数组文字中列出了三个值(三个对象文字)


为了在数组中找到一个属性为“eat”的条目,您必须遍历该数组。

它不是JSON,而是一个由单个JSON对象组成的数组

您可以这样获得0:

console.log(arr[0][key]);
但是最好有一个实际的JSON对象,可以按照您想要的方式使用。这看起来像是
{“eat”:0,“sleep”:1,“code”:2}
(只需删除
[]
s和内部
{}
s。如果这样做,您的
arr[key]
将按预期工作……尽管
arr
可能不是JSON对象的最佳名称:)

函数转换程序ArrayToAnObject(arrayOfObjects){
var returnObject={}
对于(变量i=0;i
请解释一下!
function convertThatArrayToAnObject(arrayOfObjects) {
  var returnObject = {}
  for (var i = 0; i < arrayOfObjects.length; i++) {
    var key = Object.keys(arrayOfObjects[i])[0]
    returnObject[key] = arrayOfObjects[i][key] 
  }
  return returnObject
}