js如何遍历嵌套json数组?js中循环遍历数组有几种方式?

JavaScript简称“JS”,JavaScript 是 Web 的编程语言,所有现代的 HTML 页面都使用 JavaScript,那在工作中我们如何用js遍历嵌套json数组?下面就给大家讲解一下js遍历嵌套json数组的方法。

例如数据库里面的json字符串是这样的:

var str = '[{"name":"宗2瓜","num":"1","price":"122"},{"name":"宗呱呱","num":"1","price":"100"}]';
var xqo = eval('(' + str + ')');
for (var i in xqo)
{
    alert(xqo[i].name);
}

上面的是js的,下面的是jquery来解析json字符串:

var cc = jQuery.parseJSON(data);
alert(cc[0].title);

js中循环遍历数组有几种方式?

for 循环:

for (let index = 0; index < someArray.length; index++)
{
    const elem = someArray[index];
    // ···
}

for 循环的优缺点:

它用途广泛,但是当我们要遍历数组时也很麻烦。

如果我们不想从第一个数组元素开始循环时它仍然很有用,用其他的循环机制很难做到这一点。

for-in 循环:

for (const key in someArray)
{
    console.log(key);
}

for-in 不是循环遍历数组的好方法:

它访问的是属性键,而不是值。

作为属性键,数组元素的索引是字符串,而不是数字。

它访问的是所有可枚举的属性键(自己的和继承的),而不仅仅是 Array 元素的那些。

for-in 访问继承属性的实际用途是:遍历对象的所有可枚举属性。

数组方法 .forEach():

someArray.forEach((elem, index) =>
{
    console.log(elem, index);
});

for-of 循环:

for (const elem of someArray)
{
    console.log(elem);
}

for-of 通常是最佳选择。for-of 循环在 ECMAScript 6 开始支持:

const arr = ['a', 'b', 'c'];
arr.prop = 'property value';
for (const elem of arr)
{
    console.log(elem);
}
// Output:
// 'a'
// 'b'
// 'c'

for-of 在循环遍历数组时非常有效:

用来遍历数组元素。

可以使用 await

如果有需要,可以轻松地迁移到 for-await-of。

甚至可以将 break 和 continue 用于外部作用域。

for-of 和可迭代对象

for-of 不仅可以遍历数组,还可以遍历可迭代对象,例如遍历 Map:

const myMap = new Map()
.set(false, 'no')
.set(true, 'yes')
;
for (const [key, value] of myMap) {
console.log(key, value);
}
// Output:
// false, 'no'
// true, 'yes

'遍历 myMap 会生成 [键,值] 对,可以通过对其进行解构来直接访问每一对数据。

for-of 和数组索引

数组方法 .entries() 返回一个可迭代的 [index,value] 对。如果使用 for-of 并使用此方法进行解构,可以很方便地访问数组索引:

const arr = ['chocolate', 'vanilla', 'strawberry'];
for (const [index, elem] of arr.entries())
{
    console.log(index, elem);
}
// Output:
// 0, 'chocolate'
// 1, 'vanilla'
// 2, 'strawberry'

我们对比这几种方式来看,发现还是for-of 循环的可用性确实比 for,for-in 和 .forEach() 更好。最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

java工程师可以读哪些书籍?java工程师书籍推荐

Java 泛型方法怎么定义?Java 定义泛型方法

javabean不能访问的范围是什么?javabean访问范围汇总