Javascript 尝试返回givenName的所有键值
试图返回givenName的所有键值,但没有得到任何结果。 我是新来的这是Javascript 尝试返回givenName的所有键值,javascript,arrays,Javascript,Arrays,试图返回givenName的所有键值,但没有得到任何结果。 我是新来的这是 window.location.href = 'gonative://contacts/getAll?callback=contacts_callback'; function contacts_callback(data) { var obj = JSON.stringify(data); var obj = JSON.parse(obj); var givenName = obj.conta
window.location.href = 'gonative://contacts/getAll?callback=contacts_callback';
function contacts_callback(data) {
var obj = JSON.stringify(data);
var obj = JSON.parse(obj);
var givenName = obj.contacts[0].givenName;
var keys = Object.keys(obj.contacts.givenName);
document.getElementById("demo").innerHTML = keys;
}
假设
obj.contacts
是一个对象数组,每个对象都有一个givenName
属性
由于obj.contacts
是一个数组,因此它本身不太可能有givenName
属性(它可以,但是你不能通过JSON获得)
与
var keys = Object.keys(undefined);
此时,浏览器开发人员工具控制台中应该会出现错误
您需要使用Array#map
函数,如下所示
function contacts_callback(obj) {
var givenNames = obj.contacts.map(({givenName}) => givenName);
document.getElementById("demo").innerHTML = givenNames;
}
注
除了两次声明同一个变量(obj)的明显错误(但不影响javascript),代码与:
function contacts_callback(obj) {
注意:但是,如果函数中的代码要改变obj
中的任何值,那么如果您不想更改传入的对象,则应使用原始代码
data
看起来怎么样?代码从未执行过,您正在重定向到新页面。这是一个非常大的数据,因为这是从您手机的通讯簿访问的。如果obj.contacts
是一个数组,那么您做得不对。是的,这是一个数组array@DigiNetEvents-注意:请为deb使用浏览器开发人员工具控制台ugging,你可能会看到一个错误调用stringify and parse是一种制作对象深度副本的方法。但是在这个函数中没有必要这样做。@Barmar-我知道,但在这种情况下没有必要-如果传入的对象发生了变异,情况会有所不同-我已经用这一点更新了答案
function contacts_callback(data) {
var obj = JSON.stringify(data);
var obj = JSON.parse(obj);
function contacts_callback(obj) {