var jsonData={"key1":"value1","key2":"value2","key3":"value3"};
比如上述数据,我想取到第二个属性的值value2,不能通过key2,可以通过下标取到么?
var jsonData={"key1":"value1","key2":"value2","key3":"value3"};
比如上述数据,我想取到第二个属性的值value2,不能通过key2,可以通过下标取到么?
{} 是无序的,不能保证取的就是你想要的。
如果没有别的考虑,你可以换一种格式:
[{'k': 'key1', 'v': 'value1'},{'k': 'key1', 'v': 'value1'},{'k': 'key1', 'v': 'value1'}]
这样可以取第二个对象的v值
这个问题涉及到对象{}
与数组[]
的区别,数组是按顺序排列的,下标数组确定的,而对象是取键值,无序的,所以不同通过下标取值。
一:可以转换存储结构,使用数组存数据
二:通过排序算法固定键值对的位置
三:对键值进行标记
你可以看看前面他们说的,我认同。我不保证我的对,但是我想抖机灵。{"key1":"value1","key2":"value2","key3":"value3"}
是一个对象,我们先用JSON.stringify变一下'{"key1":"value1","key2":"value2","key3":"value3"}'
变成JSON对象了,嗯好棒,'"key1":"value1","key2":"value2","key3":"value3"'
我们用substring把两边括号去掉,是不是猜到了?[""key1":"value1"", ""key2":"value2"", ""key3":"value3""]
我们使用split把上面的字符串通过,分割成数组。'"key2":"value2"'
访问我们的这个数组,是不是美滋滋'"value2"'
然后就是在用.split(':')[1]
好了我吧代码放上了
jsonData = {"key1":"value1","key2":"value2","key3":"value3"}
JSON.stringify(jsonData)
.substring(1,JSON.stringify(jsonData).length -1)
.split(',')[1]
.split(':')[1]
function getNthFromObject(data, nth) {
if (data == null) return null;
let n = 0;
for (let k in data) {
if (data.hasOwnProperty(k) && n == nth) {
return data[k];
}
n++;
}
return null;
}
let data = {name: 'segmentfault', age: 100889, height: '300cm'};
console.log(getNthFromObject(data, 2)); // 300cm