作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在努力想出一个解决方案。我已经测试了一些堆栈解决方案来迭代嵌套对象,但还没有让它正常工作。我的数据结构如下。
我一直在尝试首先迭代嵌套对象,这个堆栈似乎与我的相似。
Iterate through Nested JavaScript Objects
但是,当我在 for 循环中访问 geo、value 对象以获取其所有属性、ip、主机名、城市等时,我空手而归,未定义。这是我在下面尝试过的代码片段。
我试图获取整个对象中的所有键和值,并将它们字符串化为一个漂亮的参数字符串,以在 ajax 请求中发送到服务器。
for (var i = 0; i < myarray.length; i++) {
var o = myarray[i];
if (o.name === "geo") {
o.value.ip;
}
}
0: {name: "firstname", value: "John"}
1: {name: "lastname", value: "Smith"}
2: {name: "email", value: "asddas@gmail.com"}
3: {name: "password", value: "asdsdadasads"}
4: {name: "paypal_email", value: "asdsa@gmail.com"}
5: {name: "phone", value: "1234567894"}
6: {name: "geo",value: "
{"ip":"111.111.111.111","hostname":"rr.com","city":"MyCity","region":"Ohio","country":"US","loc":"41.34.23","org":"Inc","postal":"1234","timezone":"America/New_York","readme":"https://www.google.com"}"
__proto__: Object
length: 7
__proto__: Array(0)
最佳答案
问题是 geo
对象的结构很奇怪:
name: "geo",value: "{"ip":"111.111.111.111","hostname":"rr.com","city":"MyCity","region":"Ohio","country":"US","loc":"41.34.23","org":"Inc","postal":"1234","timezone":"America/New_York","readme":"https://www.google.com"}"
该值看起来是 JSON 表示法中的字符串。您必须先解析它才能查找其属性:
if (o.name === "geo") {
const nestedObj = JSON.parse(o.value);
console.log(nestedObj.ip);
}
您还可以考虑修复为该对象服务的任何内容,以便该值是一个实际对象 - 如果可能的话(可能不可行,但它会使代码更有意义)。
您还可以考虑使用 .find
而不是 for
循环,以使代码更短、更优雅:
const json = myarray.find(({ name }) => name === 'geo').value;
const nestedObj = JSON.parse(json);
(如果 geo
对象可能不存在,当然首先测试 undefined
)
关于javascript - 如何遍历对象数组并进行字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57879723/
我是一名优秀的程序员,十分优秀!