舆情分析平台问题总结
作者:互联网
舆情分析平台问题总结
去重求交集
原始数据格式
channel_info = {
'微信':
{
'用户类型': ['乘客', '司机'],
'地区': ['杭州'],
'性别':['男','女']
},
'微博':
{
'用户类型': ['乘客', '司机'],
'地区': ['上海', '北京','杭州'],
},
'车主圈':
{
'用户类型': ['乘客', '司机'],
'地区': ['杭州', '上海', '北京']
},
'慢车':
{
'用户类型': ['司机'],
'地区': ['杭州', '上海', '北京'],
'评论类型':['好评','坏评']
},
}
目标数据格式
//取数据的交集
channel_list:['微信','微博','车主圈','慢车'];
field_list:{
'用户类型': ['司机'],
'地区': ['杭州'],
}
方法
const channel_list = Object.keys(channel_info);
const resData = channel_list.map(key => {
return Object.keys(channel_info[key]).map(item => ({
title: item,
content: channel_info[key][item]
})),
});
/*
resData = [
[
{title:'用户类型',content:['乘客', '司机']},
...
],
,
...
]
*/
交集和并集
arr:[[{},{},{}],[{},{}],[{},{}]]
//数组交集
arrayRepeatfy = (arr) => {
let newArry = new Array(); // 数组⽤于返回结果
if (arr.length > 0) {
let titleArr = new Array();
let contentArr = new Array();
let intersectionTitle = new Array();
let intersectionCon = new Array();
for (let i = 0, leni = arr.length; i < leni; i++) {
let temp = []
for (let j = 0, lenj = arr[i].length; j < lenj; j++) {
temp.push(arr[i][j].title);
}
titleArr[i] = temp;
}
intersectionTitle = titleArr[0];
if (arr.length == 1) {
arr[0].map(item => {
newArry.push({ title: item.title, content: item.content });
})
} else {
for (let i = 0, leni = titleArr.length; i < leni; i++) {
intersectionTitle = titleArr[i].filter(function (val) { return intersectionTitle.includes(val) })//获取title的交集
}
intersectionTitle.map(item => {
newArry.push({ title: item, content: [] });
});
for (let i = 0; i < newArry.length; i++) {
contentArr.push([])
for (let j = 0, lenj = arr.length; j < lenj; j++) {
arr[j].map((item) => {
if (newArry[i].title === item.title) {
contentArr[i].push(item.content);
}
});
}
contentArr.map((itemArr, i) => {
intersectionCon = itemArr[0];
itemArr.map(item => {
intersectionCon = item.filter(function (val) { return intersectionCon.includes(val) });
});
newArry[i].content = intersectionCon;
})
}
}
}
return newArry
}
//数组并集
arrayNonRepeatfy = (arr) => {
let map = new Map();
let newArry = new Array(); // 数组⽤于返回结果
for (let i = 0; i < arr.length; i++) {
if (map.has(arr[i].title)) { // 如果有该key值
map.set(arr[i].title, true);
} else {
map.set(arr[i].title, false); // 如果没有该key值
newArry.push({ title: arr[i].title, content: [] });
}
}
for (let i = 0; i < newArry.length; i++) {
arr.map((item) => {
if (newArry[i].title === item.title) {
let temp = newArry[i].content.concat(item.content);
newArry[i].content = [...new Set(temp)]; //去重
}
})
}
return newArry
}
ANTD table
展开列不对齐
ant-design Table组件错位/对不齐
react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐
设置单元格背景
更新数据未渲染页面
React的Table组件在更新dataSource时,未重新渲染页面
轮询 长连接 推送
长连接
前端和后台进行WebSocket长连接和axios轮询的方法(vue框架)
标签:总结,map,arr,title,平台,item,newArry,let,舆情 来源: https://blog.csdn.net/chuoye_sweet_tea/article/details/114076176