在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 怎么判斷JSON對(duì)象中value存在重復(fù)值次數(shù)多少

怎么判斷JSON對(duì)象中value存在重復(fù)值次數(shù)多少

怎么判斷JSON對(duì)象中value存在重復(fù)值次數(shù)多少?
假設(shè)是等待處理,判斷這個(gè)相同值總共多少個(gè),然后新建 JSON,如下:

原數(shù)據(jù):

[
    {name: "fcf294131", key: "處理進(jìn)度", value: "等待處理"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "正在處理"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "等待處理"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "完成"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "等待處理"}
]

處理

[
    {key:"等待處理",len:3},
    {key:"正在處理",len:1},
    {key:"完成",len:1}
]

這個(gè)方法怎么寫?

回答
編輯回答
負(fù)我心

lodash 里面有一個(gè) unionBy() 方法. 可以去看看lodash#unionBy

說(shuō)白點(diǎn)就是去重嘛

2018年4月8日 17:17
編輯回答
替身

寫了一個(gè)簡(jiǎn)單易懂的:

function countValue (arr) {
  var does = {
    key: '等待處理',
    len: 0
  };
   var doing = {
    key: '正在處理',
    len: 0
   };
   var done = {
    key: '已處理',
    len: 0
   };
  var newArr = [];
  for(var i =0;i <arr.length; i++) {
    switch(arr[i].value) {
      case '等待處理': does.len++;break;
      case '正在處理': doing.len++;break;
      case '已處理': done.len++;break;
    }
  }
  newArr.push(does);
  newArr.push(doing);
  newArr.push(done);
  return newArr
}

結(jié)果如圖:
圖片描述

2017年9月1日 01:34
編輯回答
寫榮

可以用ramda.js

http://ramdajs.com/docs/#countBy

var data = [
    {name: "fcf294131", key: "處理進(jìn)度", value: "等待處理"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "正在處理"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "等待處理"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "完成"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "等待處理"}
];
R.countBy(R.prop('value'))(data);    //=> {"完成": 1, "正在處理": 1, "等待處理": 3}
2018年8月5日 06:44
編輯回答
念初

如果處理結(jié)果非要是這種對(duì)象的數(shù)組的話,沒(méi)有簡(jiǎn)單辦法,雙層循環(huán)慢慢++就好。

如果”等待處理“這樣的字眼能換成英文的表示,還能用對(duì)象模擬一下map,只循環(huán)目標(biāo)數(shù)據(jù)就好

2018年8月25日 00:43
編輯回答
還吻

如果已知需要處理的值的話

var arrStr=JSON.stringify([
    {name: "fcf294131", key: "處理進(jìn)度", value: "等待處理"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "正在處理"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "等待處理"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "完成"},
    {name: "fcf294131", key: "處理進(jìn)度", value: "等待處理"}
])
res=[
    {key: "等待處理", len: arrStr.split("等待處理").length-1},
    {key: "正在處理", len: arrStr.split("正在處理").length-1},
    {key: "完成", len: arrStr.split("完成").length-1}
]

當(dāng)然沒(méi)有考慮性能,只是取巧簡(jiǎn)潔一點(diǎn)hhhh

2017年11月27日 14:58
編輯回答
苦妄
Array.from(data.reduce((m, x) => m.set(x.value, (m.get(x.value) || 0) + 1), new Map()))
  .map(([key, len]) => ({key, len}))
2017年2月2日 11:55
編輯回答
萌面人
var O = arr.map(a => a['value']).reduce((o, k) => [o[k] = (o[k] || 0) + 1, o][1], {});
Object.keys(O).map(key => {return {key: key, len: O[key]}})
2018年2月5日 21:47
編輯回答
眼雜
let arr = [], // 初始數(shù)據(jù)集
    res = {}; // 結(jié)果
arr.forEach(item => {
    if(!res[item.value]) {
        res[item.value] = {
            key: item.value,
            len: 1
        }
    } else {
        res[item.value].len++;
    }
})

res = Object.values(res);
2017年8月9日 06:15
編輯回答
兔囡囡
var arr2 = arr1.reduce((all,a)=>{
    if(all[a.value]){
        all[a.value]++
    }else {
        all[a.value]=1
    }
    return all;

},[]);
console.log(Object.keys(arr2).map(key=>({key:key,len:arr2[key]})
2017年5月20日 21:32