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

yizhihongxing

下面我将为您详细讲解“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实现的一个日期格式化函数分享

    现在我来为你讲解如何实现JavaScript的一个日期格式化函数。 知识储备 在编写日期格式化函数之前,我们需要先掌握以下知识: JavaScript中的Date对象和相关API 正则表达式的基本使用 字符串的基本操作方法 编写思路 当我们要将一个日期格式化成指定的格式时,我们需要将日期对象转换成字符串,然后按照特定的格式进行拼接。 首先,我们需要传入两个参…

    JavaScript 2023年6月10日
    00
  • 有关js的变量作用域和this指针的讨论

    标题:有关JS的变量作用域和this指针的讨论 1. 变量作用域 1.1 作用域是什么 在JS中,作用域可以理解为变量的有效范围。JS支持两种作用域:全局作用域和函数作用域。 全局作用域是指整个JS文件,其内定义的变量可以被文件中任何一个函数所使用。 函数作用域是指只在函数体内部(包括函数体内嵌套的函数中)定义的变量。这些变量只在函数体内及其内部的函数中有效…

    JavaScript 2023年5月27日
    00
  • js 数字、字符串、布尔值的转换方法(必看)

    JS 数字、字符串、布尔值的转换方法 转换为数字 parseInt() parseInt() 函数可将一个字符串转换为整数。 let str = ’15px’; let num = parseInt(str); console.log(num); // 15 可以设置第二个参数表示进制。 let str = ‘1011’; let num = parseIn…

    JavaScript 2023年5月28日
    00
  • Aptana调试javascript图解教程

    下面我来详细讲解“Aptana调试JavaScript图解教程”的完整攻略。 1. Aptana是什么? Aptana是一款用于web开发的开源IDE,可以提供代码编辑、调试、版本控制等功能。Aptana的调试功能可以帮助我们在调试JavaScript代码时快速定位和解决问题。 2. 如何使用Aptana调试JavaScript? 2.1 安装Aptana …

    JavaScript 2023年6月11日
    00
  • JavaScript创建防篡改对象的方法分析

    JavaScript创建防篡改对象的方法分析 概述 在 JavaScript 中,对象的属性是可以被动态的添加和删除的,这也就为代码注入与篡改的攻击提供了空间。因此,我们需要一些手段来保护对象不受任意修改,这就是防篡改对象。 防篡改对象即不能被修改的对象,其中包含两种类型的属性: 可写属性:这类属性可以被修改。 不可写(读)属性:这类属性不能被修改。 在本篇…

    JavaScript 2023年5月28日
    00
  • 深入理解JS中的Function.prototype.bind()方法

    关于深入理解JS中的Function.prototype.bind()方法,本文将分为以下几个部分进行详细讲解: Function.prototype.bind()介绍 Function.prototype.bind()的参数和返回值 Function.prototype.bind()与this的绑定 Function.prototype.bind()的实现…

    JavaScript 2023年5月27日
    00
  • js使用for循环查询数组中是否存在某个值

    使用for循环查询数组中是否存在某个值的攻略如下: 1. 确认查询目标和数组 首先,我们需要确认要查询的目标,以及要在哪个数组中查询。例如,我们要查询数字5是否存在于数组arr中。 const arr = [1, 3, 5, 7, 9]; const target = 5; 2. 使用for循环进行查询 接着,我们使用for循环遍历数组,每次将当前元素与目标…

    JavaScript 2023年6月11日
    00
  • javascript 在firebug调试时用console.log的方法

    下面是详细讲解 JavaScript 在 Firebug 调试时用 console.log 的方法的攻略: 1.安装 Firebug 要使用 Firebug 进行 JavaScript 调试,首先需要安装 Firebug 插件,可以在 Firefox 插件商店中搜索并安装即可。 2.启用 Firebug 安装完成后,在 Firefox 中按下 F12 键或者…

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