gpt4 book ai didi

javascript - 如何遍历对象数组并进行字符串化

转载 作者:行者123 更新时间:2023-11-29 20:31:34 24 4
gpt4 key购买 nike

我一直在努力想出一个解决方案。我已经测试了一些堆栈解决方案来迭代嵌套对象,但还没有让它正常工作。我的数据结构如下。

我一直在尝试首先迭代嵌套对象,这个堆栈似乎与我的相似。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com