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日

相关文章

  • JS使用正则表达式过滤多个词语并替换为相同长度星号的方法

    使用正则表达式过滤多个词语并替换为相同长度星号是实现信息过滤和敏感词检测的重要方法。下面是具体步骤: 定义敏感词列表 首先,需要定义敏感词列表。可以将敏感词保存在服务器数据库或者直接写在JavaScript代码中。 const badWords = [‘bad’, ‘worse’, ‘worst’]; 在此示例中,敏感词列表包含三个单词:”bad”、”wor…

    JavaScript 2023年6月10日
    00
  • 梳理总结JavaScript的23个String方法

    下面是一份详细的攻略,可能会有点长,请您慢慢阅读。 梳理总结JavaScript的23个String方法 String.prototype.charAt() 此方法用于返回指定位置的字符。下面是一个示例: const str = "hello"; const char = str.charAt(2); // ‘l’ 这个示例中,我们从字符…

    JavaScript 2023年5月19日
    00
  • 在JavaScript中查找字符串中最长单词的三种方法(推荐)

    让我们来详细讲解在JavaScript中查找字符串中最长单词的三种方法。 方法一:使用split()和sort()函数 该方法通过使用split()函数将字符串转换为数组,并使用sort()函数对数组进行排序,然后找到数组中最长的单词来查找最长单词。 function findLongestWord(str) { let words = str.split(…

    JavaScript 2023年5月28日
    00
  • javascript深拷贝的几种情况总结

    JavaScript深拷贝的几种情况总结 在 JavaScript 中,对于对象的赋值,常常会遇到浅拷贝和深拷贝的问题。浅拷贝只复制对象的引用,而深拷贝则是复制对象的值。这篇文章将总结 JavaScript 中深拷贝的几种情况以及对应的实现方法。 基本数据类型 字符串、数值、布尔类型(string, number, boolean) 基本数据类型的深拷贝非常…

    JavaScript 2023年6月10日
    00
  • 一文详解JS私有属性的6种实现方式

    一文详解JS私有属性的6种实现方式 在JavaScript中,我们可以使用不同的方法来实现私有属性。私有属性是指只能在类内部访问,并且不能在类外部访问的属性。下面将详细介绍JS私有属性的6种实现方式。 1. 使用Symbol来实现私有属性 Symbol是ES6新增的数据类型,它是一种不可变的数据类型,用于作为对象属性的唯一标识符,从而避免了属性名冲突。在类的…

    JavaScript 2023年5月27日
    00
  • 微信小程序 教程之事件

    以下是关于“微信小程序教程之事件”的详细攻略: 什么是小程序事件 微信小程序中,我们可以使用事件来监听用户的操作,并根据用户操作来触发我们程序中的相应的行为。小程序中常见的一些事件如下: touchstart、touchmove、touchend:触摸事件,可以监听用户触摸屏幕的动作; tap、longpress、longtap:点击事件,可以监听用户单击、…

    JavaScript 2023年6月11日
    00
  • Ajax+js实现异步交互

    实现”Ajax+js实现异步交互”的具体步骤如下: 创建 XMLHttpRequest 对象 使用Js 中的 XMLHttpRequest 对象创建Ajax请求,该对象用来与服务器交互,从服务器请求数据和处理响应。 var xmlhttp; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Oper…

    JavaScript 2023年6月11日
    00
  • javascript动态获取登录时间和在线时长

    1. 获取登录时间 在Javascript中获取登录时间需要使用Date对象。可以在用户登录时记录服务器端的时间戳,然后将时间戳传递给前端,使用Date对象将时间戳转换成具体的日期时间,最后将日期时间显示在页面上。 例如,假设用户登录时服务器端返回的时间戳为 1574825471373,那么我们可以使用以下代码将时间戳转换成日期时间: const login…

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