JS实现键值对遍历json数组功能示例

下面我将为您详细讲解“JS实现键值对遍历json数组功能示例”的完整攻略。

一、前置知识

在进行键值对遍历json数组的操作前,需要您先了解以下基础知识:

  1. JSON数组:JSON是一种轻量级的数据交换格式,通常使用JSON格式来传输数据,JSON数组即是由多个JSON对象组成的数组。

  2. for...in循环:用于遍历一个对象的所有可枚举属性,循环中可以获取到枚举属性的名称。

  3. Object.keys():用于获取对象的所有可枚举属性的名称,返回一个由属性名组成的数组。

二、实现步骤

现在,让我们来实现键值对遍历json数组的功能。下面是具体步骤:

  1. 首先,定义一个JSON数组,其中包含多个JSON对象,用于模拟真实场景。

js
const data = [
{
name: "John",
age: 30,
email: "john@example.com"
},
{
name: "Jane",
age: 25,
email: "jane@example.com"
},
{
name: "Jack",
age: 35,
email: "jack@example.com"
}
];

  1. 使用for...in循环遍历数组中每个JSON对象的可枚举属性,并输出它们的名称和值。

js
for (let i = 0; i < data.length; i++) {
const person = data[i];
for (let key in person) {
console.log(key + ": " + person[key]);
}
}

运行结果为:

name: John
age: 30
email: john@example.com
name: Jane
age: 25
email: jane@example.com
name: Jack
age: 35
email: jack@example.com

  1. 使用Object.keys()方法获取数组中第一个JSON对象的所有属性名称,并输出它们的名称和值。

js
const keys = Object.keys(data[0]);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
console.log(key + ": " + data[0][key]);
}

运行结果为:

name: John
age: 30
email: john@example.com

至此,我们已经实现了键值对遍历json数组的功能。

三、示例说明

在实际开发中,键值对遍历json数组的功能经常会被使用到。下面以两个实例来进一步说明:

示例1:表格渲染

假设我们要实现一个表格组件,需要从后台获取JSON数据,并根据数据渲染出一个表格。此时,键值对遍历json数组的功能就派上了用场。

假设我们从后台获取到的数据如下:

const data = [
   {
      name: "John",
      age: 30,
      email: "john@example.com"
   },
   {
      name: "Jane",
      age: 25,
      email: "jane@example.com"
   },
   {
      name: "Jack",
      age: 35,
      email: "jack@example.com"
   }
];

我们可以使用以下代码将数据渲染成一个表格:

function renderTable(data) {
   const table = document.createElement("table");
   // 表头
   const header = document.createElement("tr");
   const headerKeys = Object.keys(data[0]);
   for (let i = 0; i < headerKeys.length; i++) {
      const headerKey = headerKeys[i];
      const headerCell = document.createElement("th");
      headerCell.textContent = headerKey;
      header.appendChild(headerCell);
   }
   table.appendChild(header);
   // 表格内容
   for (let i = 0; i < data.length; i++) {
      const row = document.createElement("tr");
      const person = data[i];
      for (let key in person) {
         const cell = document.createElement("td");
         cell.textContent = person[key];
         row.appendChild(cell);
      }
      table.appendChild(row);
   }
   return table;
}

document.body.appendChild(renderTable(data));

渲染结果如下:

name age email
John 30 john@example.com
Jane 25 jane@example.com
Jack 35 jack@example.com

示例2:数据过滤

假设我们在一个电商网站中实现一个商品列表,能让用户根据商品的分类、价格、品牌等信息进行搜索和筛选。此时,键值对遍历json数组的功能也就派上用场了。

假设我们有如下的商品数据:

const products = [
   {
      name: "iPhone XR",
      brand: "Apple",
      category: "Electronics",
      price: 749,
      inStock: true
   },
   {
      name: "Samsung Galaxy S10",
      brand: "Samsung",
      category: "Electronics",
      price: 899,
      inStock: true
   },
   {
      name: "Nike Air Max 270 React",
      brand: "Nike",
      category: "Footwear",
      price: 161.97,
      inStock: false
   },
   {
      name: "Levi's 501 Original Fit Jeans",
      brand: "Levi's",
      category: "Clothing",
      price: 59.5,
      inStock: true
   }
];

以下代码实现了将商品数据渲染为一个列表,并允许用户根据商品的分类和品牌来进行过滤。

<input type="text" id="category-input" placeholder="Enter category name">
<div>
   <input type="checkbox" id="brand-apple"> <label for="brand-apple">Apple</label>
   <input type="checkbox" id="brand-samsung"> <label for="brand-samsung">Samsung</label>
   <input type="checkbox" id="brand-nike"> <label for="brand-nike">Nike</label>
   <input type="checkbox" id="brand-levis"> <label for="brand-levis">Levi's</label>
</div>
<ul id="product-list"></ul>

<script>
const categoryInput = document.getElementById("category-input");
const brandCheckboxes = document.querySelectorAll('[id^="brand-"]');
const productList = document.getElementById("product-list");

function renderList(products) {
   productList.innerHTML = "";
   for (let i = 0; i < products.length; i++) {
      const product = products[i];
      const item = document.createElement("li");
      item.textContent = product.name + " - " + product.price;
      productList.appendChild(item);
   }
}

function filterList() {
   const filteredProducts = products.filter(product => {
      const categoryMatch = categoryInput.value === "" || product.category.toLowerCase().includes(categoryInput.value.toLowerCase());
      const brandMatch = Array.from(brandCheckboxes).filter(checkbox => checkbox.checked).some(checkbox => checkbox.id.endsWith(product.brand.toLowerCase()));
      return categoryMatch && brandMatch;
   });
   renderList(filteredProducts);
}

filterList();

categoryInput.addEventListener("input", filterList);
brandCheckboxes.forEach(checkbox => checkbox.addEventListener("change", filterList));
</script>

使用上述代码,我们可以根据多个条件来对商品进行过滤,便于用户快速找到所需商品。

以上是两个关于键值对遍历json数组的简单示例。希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现键值对遍历json数组功能示例 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 魔鬼字典 JavaScript 笔记 代码比较多乱第3/3页

    下面是详细讲解“魔鬼字典 JavaScript 笔记 代码比较多乱第3/3页”的完整攻略。 1. 了解魔鬼字典的功能 魔鬼字典是一个基于 JavaScript 实现的词典工具,可以帮助用户查询单词的翻译、同义词、反义词和例句等信息。该工具的主要功能包括: 解析用户输入的单词,并根据单词的不同词性展示不同的内容。 可以查询单词的翻译、同义词、反义词和例句等信息…

    JavaScript 2023年5月19日
    00
  • 开发跨浏览器的JavaScript方法说明第2/2页

    开发跨浏览器的JavaScript方法说明 在开发JavaScript应用程序时,我们往往需要编写跨浏览器的代码,确保在不同的浏览器中运行结果一致。 下面是一些跨浏览器JavaScript开发中常用的技巧和工具: 1. 另一种检测浏览器的方法 通常我们会使用 navigator.userAgent 来检测浏览器类型和版本。但是有些浏览器会伪造这个信息,导致检…

    JavaScript 2023年6月10日
    00
  • javascript利用canvas实现鼠标拖拽功能

    下面是关于“javascript利用canvas实现鼠标拖拽功能”的完整攻略: 什么是canvas? Canvas是HTML5中的一个新特性,是一个可以用脚本(通常为JavaScript)在其中绘制图形的HTML元素。Canvas有两种绘制路径:一种是通过命令式的JavaScript进行绘图;另外一次是通过使用矢量图形编辑器生成并导入路径。 实现鼠标拖拽的步…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript面向对象实战之封装拖拽对象

    《详解JavaScript面向对象实战之封装拖拽对象》是一篇关于JavaScript面向对象编程的实战性文章,主要讲解通过封装实现拖拽对象的过程。下面是该文的完整攻略: 标题 该文章的标题为:详解JavaScript面向对象实战之封装拖拽对象。 正文 介绍 文章首先对面向对象编程进行了简要介绍,包括面向对象编程的基本思想、面向对象编程的优点等。然后,文章介绍…

    JavaScript 2023年5月27日
    00
  • JavaScript编码小技巧分享

    JavaScript编码小技巧分享 概述 JavaScript是一门常用的脚本编程语言,用于网页前端开发。面对日益复杂的开发需求,编写高效、稳定、易于维护的JavaScript代码显得尤为重要。本文将分享一些实用的JavaScript编码小技巧,帮助你提高开发效率、提升代码质量。 小技巧一:避免使用全局变量 在JavaScript中,全局变量具有全局作用域,…

    JavaScript 2023年5月20日
    00
  • javascript中attribute和property的区别详解

    JavaScript中attribute和property的区别详解 在JavaScript中,我们通常会用到HTML元素的属性和属性值,这些信息可以通过attribute或property来获取。虽然它们很相似,但是它们之间还是有很大的区别的。 Attribute Attribute是HTML元素上出现的特性(比如id、class、name等),它们包含在…

    JavaScript 2023年6月10日
    00
  • javascript typeof id===’string’?document.getElementById(id):id解释 原创

    “javascript typeof id===’string’?document.getElementById(id):id” 是一段 JavaScript 三元运算符语句。这段代码的作用是:判断变量 id 是否是字符串类型,如果是,则执行 document.getElementById(id),否则返回变量 id。 具体来说,其中涉及到以下部分: “ty…

    JavaScript 2023年6月10日
    00
  • javascript弹出带文字信息的提示框效果

    下面是详细讲解”JavaScript弹出带文字信息的提示框效果”的完整攻略。 什么是JavaScript弹出提示框 JavaScript弹出提示框是网页开发中用于向用户展示重要信息的一种交互方式。可以显示文本信息或者请求用户进行操作。一般有三种类型:警告框、提示框和确认框。 其中,提示框是用于弹出信息,不需要用户进行操作,而确认框和警告框需要用户做出相应的处…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部