根据条件筛选JSON数据,折磨好久了。跪求大神。。实在搞不定了。

soamu 2018-06-25 11:20:46
数据一是不确定的,可以随意组合,筛选出数据二GUID里的数据。如果没有就返回空

数据一可以只选择一个纬度,未选的是-1,例如:数据一[0,-1,-1],数据二中的数据只筛选GUID第一位等于0的,如果数据一[0,-1,1]你们数据二中筛选第一位等于0,最后一位等于1的。。
折磨我好久了。。实在是搞不定了。

数据一:[0,0,0]

数据二:[{"Guid":"0_0_0","GName":"星辰黑_电信_4G","ID":1,"Code":"","SalePrice":"1799","StoreAmount":"100"},
{"Guid":"0_0_1","GName":"星辰黑_电信_6G","ID":2,"Code":"","SalePrice":"2299","StoreAmount":"100"},
{"Guid":"0_0_2","GName":"星辰黑_电信_12G","ID":3,"Code":"","SalePrice":"3255","StoreAmount":"100"},
{"Guid":"0_1_0","GName":"星辰黑_联通_4G","ID":4,"Code":"","SalePrice":"1799","StoreAmount":"100"},
{"Guid":"0_1_1","GName":"星辰黑_联通_6G","ID":5,"Code":"","SalePrice":"3255","StoreAmount":"100"},
{"Guid":"0_1_2","GName":"星辰黑_联通_12G","ID":6,"Code":"","SalePrice":"3255","StoreAmount":"100"},
{"Guid":"0_2_0","GName":"星辰黑_移动_4G","ID":7,"Code":"","SalePrice":"1799","StoreAmount":"100"},
{"Guid":"0_2_1","GName":"星辰黑_移动_6G","ID":8,"Code":"","SalePrice":"3255","StoreAmount":"100"},
{"Guid":"0_2_2","GName":"星辰黑_移动_12G","ID":9,"Code":"","SalePrice":"3255
...全文
606 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ambit_tsai-微信 2018-06-25
  • 打赏
  • 举报
回复
引用 4 楼 ambit_tsai 的回复:

var data1 = [0,-1,1], data2 = [{"Guid":"0_0_0"},{"Guid":"0_2_1"}];
var pattern = '^' + (data1[0]===-1? '-?\\d+': data1[0]);
pattern += '_' + (data1[1]===-1? '-?\\d+': data1[1]);
pattern += '_' + (data1[2]===-1? '-?\\d+': data1[2]) + '$';
var re = new RegExp(pattern);
var data = data2.filter(function(item){
return re.test(item.Guid);
});
console.log(data);

qq_37303247 2018-06-25
  • 打赏
  • 举报
回复
用 filter 不就可以吗

var filterFunc = function(data,filter) {
return data.filter(function(el) {
var item = el['Guid'].split('_');
var len = item.length;
return item[0] == filter[0] && item[len - 1] == filter[filter.length - 1]
})
}
ambit_tsai-微信 2018-06-25
  • 打赏
  • 举报
回复

var data1 = [0,-1,1], data2 = [{"Guid":"0_0_0"},{"Guid":"0_2_1"}];
var pattern = '^' + (data1[0]===-1? '-?\\d+': data1[0]);
pattern += '_' + (data1[1]===-1? '-?\\d+': data1[1]);
pattern += '_' + (data1[2]===-1? '-?\\d+': data1[2]) + '$';
var re = new RegExp(pattern);
var data = data2.filter(function(item){
	return re.test(item.Guid);
});
console.log(data);
soamu 2018-06-25
  • 打赏
  • 举报
回复
这样表达已经很清楚了。。。这就是很绕。就是用数据一的组合,根据数据二里的Guid查询数据。。
丰云 2018-06-25
  • 打赏
  • 举报
回复
看你的描述,也很折磨人。。。。

好好组织你的语言,让别人能理解你的需求,这样别人才能帮到你
丰云 2018-06-25
  • 打赏
  • 举报
回复

var p = [0, a, b];
var re = list.filter((x) => {
var s = x.Guid.split('_');
return s[0] == 0 && (p[1] == -1 || s[1] == p[1]) && (p[2] == -1 || s[2] == p[2]);
});

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧