【问题标题】:Find JSON values return as strings [duplicate]查找 JSON 值以字符串形式返回 [重复]
【发布时间】:2022-01-08 20:51:29
【问题描述】:

我正在尝试读取 JSON data 以查找每个 trait_type 的 value 为每个 nth edition 出现多少个实例,并将值作为带有 trait_type 值 @ 的字符串发送到 HTML 表987654326@。 filter 函数当前为每个值返回 0。

var data = [
  {
    edition: 1,
    attributes: [
      {
        trait_type: "hair",
        value: "mullet"
      },
      {
        trait_type: "hat",
        value: "cap"
      }
    ]
  }
];
var mullet = data.filter(function (d) {
    return d.value === "mullet";
  }).length,
  cap = data.filter(function (d) {
    return d.value === "cap";
  }).length;

document.getElementById("mullet").innerText = mullet;
document.getElementById("cap").innerText = cap;
<dl>
  <dt>Hair?</dt>
  <dd id="mullet"></dd>
  <dt>Hat?</dt>
  <dd id="cap"></dd>
</dl>

【问题讨论】:

  • 具有您要查找的属性的数组位于.attributes

标签: javascript json


【解决方案1】:

您将不得不对其进行更深入的过滤,目前您只是查看顶层数据,因此仅存在属性键而值键不存在 { edition: 1, attributes: []} 它仅存在于数据内的属性数组中 所以你需要做的是在你的过滤器功能中更深入一层。像这样:

function filterDataFor(type) {
 const result= data.filter(
({ attributes })=> attributes
    .filter(({value})=> value ===  type)
)
  return result.length
}
  let mullet = filterDataFor('mullet')
  let cap = filterDataFor('cap')

document.getElementById("mullet").innerText = mullet;
document.getElementById("cap").innerText = cap

【讨论】:

  • 我认为这只是找到有多少实例。它实际上并没有读取值
猜你喜欢
  • 2016-11-23
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多