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
}