[英]How to get value related datas from an array of objects (nested) in javascript?
[英]Get value from javascript nested array
我是 JavaScript 编码新手。 到目前为止,我知道如何从多数组中设置和获取值,但是使用这个我找不到正确的方法来做到这一点。
我正在尝试从此数组中获取电子邮件值:
__arr.push(['id' ,'12541']);
__arr.push(['tag', {"sub":false,"email":"email@email.com"}]);
我试过
JSON.parse(__ar.tag.email)
document.write(__ar[2][2])
到目前为止,我尝试过的所有内容都得到了undefined
或tag[object, object]
。
获得它的最简单方法是什么?
email
属性位于数组的第二个元素(即基于零的索引数组的索引 1)。 因此,要访问它,您还需要访问元素的第二个对象(再次索引 1),然后.email
就在您的手中:
document.write(__arr[1][1].email);
所以你有一个 __arr 数组,你推送的第一个元素是 id,这是一个数组,第二个数组有你的电子邮件 ID。
所以你可以访问如下所示。
我希望这能解决你的问题
var __arr = []; __arr.push(['id' ,'12541']); __arr.push(['tag', {"sub":false,"email":"email@email.com"}]); console.log("email id =>", __arr[1][1].email)
假设您只推送这两个值,您的数组如下所示:
[
['id' ,'12541'],
['tag', {"sub":false,"email":"email@email.com"}]
]
意味着,当您使用__arr.tag.email
访问它时将导致未定义错误,因为它是一个数组而不是一个对象。
因此,如果您不确切知道索引,您可以做的是:
var __arr = [];
__arr.push(['id' ,'12541']);
__arr.push(['tag', {"sub":false,"email":"email@email.com"}]);
for (var i = 0; i < __arr.length; i++){
if(__arr[i][0] === 'tag'){
console.log(__arr[i][1].email);
break;
}
}
一种动态的方法(具有 2 个嵌套级别)。
基本上,我使用了两个嵌套循环并将电子邮件聚合到一个列表中。
let __arr = [] __arr.push(['id' ,'12541']); __arr.push(['tag', {"sub":false,"email":"email@email.com"}]); __arr.push(['tag2', {"sub":false,"email":"2222@email.com"}]); const emails = __arr.reduce((res, items) => { items.forEach(elem => { if (elem.email) res.push(elem.email) }) return res },[]) console.log(emails) // [ 'email@email.com', '2222@email.com' ]
我希望你知道数组是从它的索引开始的,它的基值为 0。在你的代码中,没有这样的元素在索引 2 中可用。
document.write(__ar[2][2]) //
我知道这里给出了很多答案,但我只想告诉你,即使你在“__arr”中推送值,即数组数组。 所以每个元素都存储在它的索引值中。
var __arr = [];
__arr.push(['id' ,'12541']);
__arr.push(['tag', {"sub":false,"email":"email@email.com"}]);
console.log(__arr[0]) //return you ["id", "12541"]
console.log(__arr[1]) //return you ["tag", {sub: false, email: "email@email.com"}]
again you can see inside of your "__arr" there is a an array element
console.log(__arr[0][0]) //return you "id"
console.log(__arr[0][1]) //return you "12541"
console.log(__arr[1][0]) //return you "tag"
console.log(__arr[1][1]) //return you {sub: false, email: "email@email.com"}
and here what you want i.e.
console.log(__arr[1][1].sub) //return you false
console.log(__arr[1][1].email) //return you "email@email.com"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.