【问题标题】:Get an array of distinct values for a column from dojo/store从 dojo/store 获取列的不同值的数组
【发布时间】:2023-03-23 02:58:01
【问题描述】:

我的场景:

这是我的 JSON Array 格式的测试数据:

var testDataObj = [
  { col1: 'p0',   col2: 1, tbl: 'p',   col3: '14/01/2013', col4:'BOB'},
  { col1: 'p1',   col2: 2, tbl: 'p',   col3: '14/01/2013', col4:'SANDY'},
  { col1: 'p2',   col2: 3, tbl: 'p',   col3: '14/01/2013', col4:'JASON'},
  { col1: 'p3',   col2: 4, tbl: 'p',   col3: '14/01/2013', col4:'JASON'},
  { col1: 'p4',   col2: 5, tbl: 'p',   col3: '14/01/2013', col4:'SANDY'},
];

我创建了一个 dojo/store/Memory 对象如下:

require(["dojo/store/Memory"], function(Memory){
  var gctsTestStore = new Memory({data: testDataObj});
});

我想要达到的目标:

我想获取列 col4 的不同值的数组:

var distinctColumnValues=gctsTestStore.getDistinctValuesFromColumnName('col4');
//distinctColumnValues= ['BOB','SANDY','JASON']

我的要求:

目前,我正在循环通过 JSON Array testDataObj 来获得结果,但我正在探索使用 dojo/store 的 API 的更优雅的解决方案。

我在这里使用 dojo/store/Memory,但我也可以接受其他类型的 dojo/store 的解决方案。

谢谢。

【问题讨论】:

  • 1.我们需要查看您当前使用的代码; 2. 如果您没有自己尝试过,我们不会为您编写代码。
  • 我当前的解决方法是遍历 JSON 数组 testDataObj 以获取不同值的数组。我在 Dojo 中寻找一个更优雅或内置的 api 来完成这项工作。我找了2天,没找到。

标签: arrays json dojo


【解决方案1】:

没有用于从内存存储中获取不同值的内置 API。 您需要在 Javascript 中编写自己的方法以获得不同的值。下面是一种写法。

var unique = {};
var distinct = [];
for( var i in array ){
 if( typeof(unique[array[i].col4]) == "undefined"){
  distinct.push(array[i].col4);
 }
 unique[array[i].col4] = 0;
}

【讨论】:

  • 谢谢@frank,我写了一个js函数来获取不同的值,但我认为你的函数更短。我会试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 2015-04-24
  • 1970-01-01
  • 2017-07-07
  • 2013-02-11
  • 2011-07-12
相关资源
最近更新 更多