gpt4 book ai didi

javascript - 如何使用 Javascript 不循环 JSON 中已有的键

转载 作者:行者123 更新时间:2023-12-02 16:27:58 25 4
gpt4 key购买 nike

我不确定我的搜索技能是否足够强大,能够自己找到解决方案,因为我确实尝试过,但不幸的是,对于这样一个基本的问题没有运气。提前致歉。

基本上,我有一个 JSON 对象,它有多个同名的键,例如:

{"type": "Item", "type": "Item2", "name": "Item Name", "name": "Item Name2"}

现在,如果我执行 $.each ,它会循环遍历所有这些键,从而产生两个 type 键和两个 name 键,但我我只想显示第一个具有此类 key 的 key ,而不显示其余 key 。换句话说,我只想以先循环、先显示的形式显示唯一键。

最佳答案

首先,我的猜测是你实际上并没有 JSON,只是一个对象。但无论如何,这并不重要。

JavaScript 对象(以及以 JSON 表示法描述的对象)只能具有给定名称的一个属性。如果您有 JavaScript 源代码中所描述的内容:

var data = {"type": "Item", "type": "Item2", "name": "Item Name", "name": "Item Name2"};

...在松散模式下,您最终会得到一个只有两个属性的对象:typename,其值为 "Item2""Item Name2" (属性按源代码顺序分配,因此最后一个获胜)。在严格模式下,您会收到语法错误。 (这是严格模式的便利之处之一。)

如果您有描述对象的 JSON 文本,并且该 JSON 文本重复属性名称(“键”):

var json = '{"type": "Item", "type": "Item2", "name": "Item Name", "name": "Item Name2"}';
var data = JSON.parse(json);

...JSON standard对应该发生的事情保持沉默,但是Quentin found that RFC说具有非唯一属性名称的结果是“不可预测的”。实际上,在 JavaScript 中,当您解析它时(假设它解析),您只会获得两个属性,这仅取决于反序列化器/解析器它们将具有什么值或解析器是否抛出错误。

无论哪种方式,问题都是没有意义的:当你拥有一个对象时,每个属性只有一个值,这就是你所说的你想要的最终结果。但再次请注意,如果您正在解析 JSON,我认为您无法保证会得到哪个值,因此不同的解析器(例如,在不同的浏览器中)可能会给出不同的结果。我的直觉是他们会做 JavaScript 在松散模式下所做的事情,但是......

从根本上来说,如果这是以 JSON 形式提供给您的,则需要在生成它的最后对其进行修复。如果是源代码,您只需重命名属性或删除不需要的属性。

关于javascript - 如何使用 Javascript 不循环 JSON 中已有的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28542284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com