2020/1/18 js和jq的使用方法的部分对比

本文对比了原生JavaScript与jQuery在获取页面元素及遍历数组和对象方面的不同实现方式,详细解析了两种技术在参数传递、遍历格式上的差异,帮助开发者更好地理解和选择合适的工具。

1.关于获取元素

<div id = "box"></div>

====================js====================

原生js获取对象的方式:var box =document.getElementById = ("box");

或者:var box = document.querySelector("#box");

====================jq====================

var box = $("#box")

2.关于遍历数组

====================js====================

数组中的当前项item,当前项的索引index,原始数组input。

====================jq====================

两种格式都可以遍历对象

不过这里还有一点值得注意:

那就是原生js传入的两个参数中,第一个是表示值,第二个才是索引,如果只写一个参数,默认取前面的参数,即值;

而jq中,第一个参数表示索引,第二个才是值,只写一个参数的时候,默认去前面的参数,即索引;

 

2.关于遍历对象

====================js====================

打印结果:

遍历成功!

需要注意,在没有遍历的时候我们获取对象里的值,通常是:

obj.key,

而在遍历时,需要写成obj[key],否则会打印:

====================jq====================

像数组一样,尝试第一种jq方式:

看看打印的结果:

居然只有一个num型的值和一个完整的对象打印出来了,并没有遍历对象;

说明这种格式只能够遍历数组,它会自动把对象包装为这样:

此时再运行,结果是一样的。

再看第二种方式:

结果:

遍历成功!

所以总结得出:

对于jq遍历数组,两种格式的遍历方式都是同样的效果

而对于遍历对象,则只能使用第二种遍历格式,而第一种会将对象包装为数组。

 

 

 

 

 

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
<think>好的,我现在需要回答用户关于jq工具的用途优势的问题。首先,我得回想一下自己了解的jq相关知识,确保信息的准确性。jq是一个命令行下的JSON处理工具,主要用于解析、过滤、转换操作JSON数据。用户可能是在处理JSON数据时遇到了困难,或者需要自动化处理JSON,所以才会问这个问题。 接下来,我需要整理jq的主要用途。比如,它可以用来提取特定字段,过滤数据,格式化输出,或者进行复杂的数据转换。优势方面,可能包括轻量级、跨平台、强大的查询能力,以及可以集成到脚本中的特点。同时,用户可能关心与其他工具的比较,比如Python的json模块或者其他的命令行工具如awk、sed,这时候需要突出jq在处理JSON时的便捷高效。 然后,我需要考虑用户可能的实际应用场景。例如,处理API返回的JSON数据,日志分析,或者与curl结合使用从Web服务获取数据。这时候举一些具体的例子会有助于用户理解,比如用jq从复杂的JSON中提取某个嵌套字段的值,或者重新组织数据结构。 还要检查是否有相关的引用内容可以支持回答。查看用户提供的引用,引用[1]提到JQuery的原则是“write less, do more”,而引用[4]涉及jQuery与Ajax的数据处理,但可能jq工具关联不大。不过,这里可能需要区分jq(命令行工具)JQuery(JavaScript库),避免混淆。用户可能误将两者混为一谈,所以在回答中需要明确区分,确保用户不会误解。 另外,用户提供的引用中有提到Elasticsearch资源消耗的问题,虽然与jq无直接关联,但可以间接说明处理大量JSON数据时jq的高效性,尤其是在日志处理方面,比如结合EFK栈中的JSON日志分析,jq可以快速提取所需信息,而无需消耗过多资源,相较于Elasticsearch的庞大资源需求,jq更为轻量。 在结构安排上,先说明jq是什么,然后分用途优势两部分,每个部分用条目列出,清晰明了。同时,提供一些简单的示例,展示基本用法,比如提取字段、过滤数组、数据转换等。这些示例需要符合用户提到的系统级指令,即行内数学表达式用$...$,但这里可能不涉及数学公式,而是代码块。但根据示例中的快速排序,代码块需要用```包裹,并指定语言,比如bash或json。 最后,生成相关问题,引导用户进一步探索,比如jq的高级用法,如何结合其他工具使用,常见错误处理等。这些问题应该围绕用户可能感兴趣的方向展开,帮助他们深入理解jq的应用。 需要特别注意用户可能将jqJQuery混淆,所以在回答开头需要明确指出两者的区别,避免误解。同时,强调jq在命令行环境中的优势,特别是在处理大规模或复杂JSON数据时的效率,这对于开发者系统管理员来说非常实用。 总结下来,回答的结构大致如下: 1. 解释jq是什么,区分jqJQuery。 2. 主要用途:解析、过滤、转换、格式化JSON数据。 3. 核心优势:轻量高效、语法简洁、支持管道、跨平台。 4. 应用场景举例:API数据处理、日志分析、结合curl使用。 5. 示例命令展示基本用法。 6. 相关问题生成,引导深入学习。 需要确保语言口语化,避免技术术语过多,但又要准确传达信息。同时,检查是否有引用可以自然融入,比如引用[2]提到的资源消耗问题,可以对比说明jq的轻量优势。不过要注意引用的相关性,避免牵强附会。</think>### 为什么要使用 jq 工具? jq 是一个轻量级且强大的命令行 **JSON 处理器**,专门用于解析、过滤、转换格式化 JSON 数据。它与 JavaScript 库 jQuery 无关[^1],主要面向开发者运维人员处理 JSON 格式的文本,尤其在自动化脚本日志分析中表现突出。 --- ### jq 的核心用途 1. **数据提取** 从复杂的 JSON 结构中快速提取特定字段。例如从 API 响应中获取 `id` 或 `status` 字段。 ```bash echo '{"user": {"name": "Alice", "age": 30}}' | jq '.user.name' # 输出:"Alice" ``` 2. **数据过滤** 根据条件筛选数据。例如过滤出数组中 `value > 10` 的元素。 ```bash echo '{"items": [{"id": 1, "value": 5}, {"id": 2, "value": 15}]}' | jq '.items[] | select(.value > 10)' # 输出:{"id": 2, "value": 15} ``` 3. **数据转换** 重组 JSON 结构或计算新字段。例如将字段名从 `snake_case` 改为 `camelCase`。 ```bash echo '{"user_name": "Bob"}' | jq '{userName: .user_name}' # 输出:{"userName": "Bob"} ``` 4. **格式化输出** 将压缩的 JSON 转换为易读的多行格式,或反向压缩以节省空间。 ```bash echo '{"a":1,"b":2}' | jq . # 格式化输出: # { # "a": 1, # "b": 2 # } ``` --- ### jq 的核心优势 1. **轻量高效** 无需启动虚拟机或解释器(如 Python),直接通过命令行处理数据,性能极佳,尤其适合处理大型 JSON 文件。 2. **语法简洁** 类似 JavaScript 的查询语法,学习成本低。例如 `.a.b` 表示嵌套字段,`map(...)` 用于数组处理。 3. **管道友好** 可与其他命令行工具(如 `curl`、`grep`)无缝协作,形成数据处理流水线。 ```bash curl https://api.example.com/data | jq '.results[0].timestamp' ``` 4. **跨平台支持** 支持 Linux、macOS Windows(通过 WSL 或原生二进制文件),兼容性极强。 --- ### 典型应用场景 - **API 数据处理**:快速提取 RESTful API 返回的 JSON 中的关键信息[^4]。 - **日志分析**:解析结构化日志(如 Elasticsearch 输出的 JSON 日志[^2])。 - **自动化脚本**:在 Shell 脚本中动态生成或修改 JSON 配置文件。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值