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基本类型值-Number类型

    JavaScript基本类型值-Number类型 Number类型概述 JavaScript中的Number类型用于表示数字,在JavaScript中,整数、小数、负数等都可以用Number类型表示。 Number类型的创建方式 可以使用以下方式创建Number类型: 直接使用数字赋值,如:var num = 123; 使用Number函数创建Number对…

    JavaScript 2023年6月10日
    00
  • vue、react等单页面项目部署到服务器的方法及vue和react的区别

    一、将单页面应用(SPA)部署到服务器的方法 将SPA打包生成静态文件使用webpack等打包工具将SPA打包生成静态文件,一般会生成一个dist文件夹,里面包含了SPA的所有静态资源文件。 部署到服务器将生成的静态文件复制到服务器上的部署目录,如/var/www/html,然后通过nginx等Web服务器进行访问即可。 示例:假设我们已经将一个Vue单页面…

    JavaScript 2023年6月11日
    00
  • javaScript封装的各种写法

    JavaScript中的封装是面向对象编程中的重要概念之一,主要目的是为了保护数据和方法,防止被其他代码随意篡改。下面我会详细讲解JavaScript封装的各种写法。 JavaScript封装的各种写法 1. 构造函数 构造函数是创建对象的基础,可以使用函数封装对象的属性和方法,我们可以用this关键字指向当前对象,来实现对属性和方法的操作。下面是一个示例:…

    JavaScript 2023年6月10日
    00
  • javascript判断中文的正则

    下面是关于 JavaScript 判断中文的正则表达式攻略。 正则表达式简介 正则表达式是一种强大的字符串匹配工具,它使用一种类似于字符串的模式来描述、匹配和操作文本。 若要使用正则表达式判断中文,需要掌握正则表达式的基本语法和元字符。 字符(字符表达式):表示自身字符。 字符集合(字符类):表示某个字符集合内任意字符。 特殊字符:表示特殊含义的字符。 量词…

    JavaScript 2023年6月10日
    00
  • 解决js中的setInterval清空定时器不管用问题

    当我们使用 JavaScript 中的 setInterval 函数来实现定时器时,需要注意清空定时器的问题。如果不正确地清空定时器,会导致在后续代码执行中仍然存在遗留的定时器,从而出现各种各样的问题,例如内存泄漏或者无法及时响应后续清空操作等。 为了避免这个问题,我们可以使用以下两种方法来清空定时器。 方法一:使用 clearInterval 函数清空定时…

    JavaScript 2023年6月11日
    00
  • 简易的JS计算器实现代码

    下面是关于“简易的JS计算器实现代码”的完整攻略: 一、准备工作 要实现一个简易的JS计算器,首先需要在HTML文件中创建计算器的界面,其中需要包括如下组件: 计算器界面:使用HTML的div元素模拟。 显示框:显示计算结果。 操作按钮:包括加、减、乘、除等常见计算操作,使用HTML的button元素模拟。 在创建好计算器的界面后,需要在JS文件中获取各个操…

    JavaScript 2023年5月27日
    00
  • JS中Array数组学习总结

    以下是关于“JS中Array数组学习总结”的完整攻略: JS中Array数组学习总结 概念 数组是一种有序的数据集合,是JavaScript中最重要的数据类型之一。数组可以通过索引访问、插入和删除其中的元素。 声明数组 数组的声明方式有两种,分别是字面量方式和构造函数方式。 // 字面量方式 let arr1 = [1, 2, 3, 4, 5]; // 构造…

    JavaScript 2023年5月27日
    00
  • 原生js 封装get ,post, delete 请求的实例

    下面是详细讲解“原生js 封装get ,post, delete 请求的实例”的完整攻略: 一、前置知识 在封装get, post, delete请求之前,我们需要对Http请求的基本知识有一定了解,比如HTTP请求方式、请求头、响应头、状态码等等。同时,我们也需要学习一些JavaScript中Promise对象的知识。 二、实现思路 通过封装get、pos…

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