【问题标题】:How to get number of doubling propreties in object javascript如何在对象javascript中获取加倍属性的数量
【发布时间】:2021-09-30 15:35:08
【问题描述】:

我试图在对象 json 中制作 o 循环,以便它可以向我显示所有加倍的属性。

这是我的 JSON 文件 (departements-list.json)

 [
        {"Departement": "meryem"},
        {"Departement": "meryem"},
        {"Departement": "meryem"},
        {"Departement": "meryem"},
        {"Departement": "meryem"},
    
        {"Departement": "sara"},
        {"Departement": "sara"},
        {"Departement": "sara"},
    
        {"Departement": "ouss"},
        {"Departement": "ouss"},
        {"Departement": "ouss"},
    
        {"Departement": "samati"},
        {"Departement": "samati"},
        {"Departement": "samati"},
        {"Departement": "samati"},
        {"Departement": "samati"},
        {"Departement": "samati"},
        {"Departement": "samati"},
        {"Departement": "samati"},
        {"Departement": "samati"}
   ]

这是我的 js:

  import departement_list from "../data/departements-list.json";
    var jsonData = JSON.parse(JSON.stringify(departement_list));
    
    for (var dep of jsonData) {
     let nb_dep = Object.keys(dep.Departement).length;
    
      console.log(dep.Departement, " =" , nb_dep);
    }

我在浏览器控制台中得到了这个结果:

meryem  = 6
3custom-map.js:20 sara  = 4
3custom-map.js:20 ouss  = 4
9custom-map.js:20 samati  = 6

这不合逻辑!

【问题讨论】:

  • 您希望结果是什么样的?
  • 您计算的是每个部门名称中的字符,而不是它出现的次数。我假设您的结果应该是:meryem=5, sara=3, ouss=3, samati=9?

标签: javascript json object


【解决方案1】:

这是一个如何获取每个部门值出现次数的示例。我首先将数据映射为部门值列表。然后我创建一个新集合来创建每个值的数组。然后我遍历每个唯一值,并按该值过滤数据,并记录每个值的长度或出现次数。

const jsonData = [
  {"Departement": "meryem"},
  {"Departement": "meryem"},
  {"Departement": "meryem"},
  {"Departement": "meryem"},
  {"Departement": "meryem"},

  {"Departement": "sara"},
  {"Departement": "sara"},
  {"Departement": "sara"},

  {"Departement": "ouss"},
  {"Departement": "ouss"},
  {"Departement": "ouss"},

  {"Departement": "samati"},
  {"Departement": "samati"},
  {"Departement": "samati"},
  {"Departement": "samati"},
  {"Departement": "samati"},
  {"Departement": "samati"},
  {"Departement": "samati"},
  {"Departement": "samati"},
  {"Departement": "samati"}
];

const dataValues = jsonData.map(data => data.Departement);
const uniqueValues = [...new Set(dataValues)];
for (const val of uniqueValues) {
  console.log(`
    Val ${val}
    has ${dataValues.filter(v => v == val).length} entries
  `);
}

【讨论】:

  • 谢谢,这正是我要找的。你能告诉我这条线是做什么的吗:const uniqueValues = [...new Set(dataValues)];
  • 我在左侧初始化了一个名为uniqueValues的常量变量,要赋值的值在右侧。我正在分配一个数组,数组的内容是新集合返回的值。我正在使用spread syntax operatornew Set 中的项目传递到数组中。 set 是一个类似于列表的对象,只有唯一的条目。
  • 另外,这里不需要展开语法,只是习惯的力量。通常,当我使用集合时,我希望可以使用数组方法来使用数据。但是,for...of 循环可以很好地用于集合,所以我不需要它。
猜你喜欢
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 1970-01-01
  • 2016-09-27
相关资源
最近更新 更多