陣列遍歷物件的item去掉某一個item物件變成null
阿新 • • 發佈:2020-07-10
var arr=[{obj:'1'},{obj:'2'}]
類似以上陣列進行條件判斷之後變成 [{obj:'1',null}] 這種陣列。
遍歷查詢arr的lostpower.lostList下item中所有item的power都是null的項對於arr的索引集合。
const arr = [ { 'date': '2020-04-19', 'genIntegrated': null, 'complantPowerRate': null, 'dayPowerMaxTime': null, 'stationAvailability': null, 'genPlantConsume': null, 'integratedLostEH': '0.0000', 'ggg': null, 'carbonDioxide': '647376000.0000', 'comPlantPower': null, 'slopeAccRadiationSum': '24.32', 'plantLossRate': null, 'genInternet': null, 'resourceInditor': null, 'total': '0.8928', 'theoryPower': '34483.5876', 'topSunshineHours': '6.7562', 'pvMatrixLossHours': '0.0000', 'yyy': null, 'yyyyy': null, 'stationName': '永仁', 'genInverter': '25.8950', 'id': 20200419, 'buyPower': null, 'inverterLostEH': '0.0000', 'resourceValue': '0.03', 'comPR': null, 'plantPowerRate': null, 'markCoal': '259729588.7663', 'internetLostEH': '0.0000', 'powerInditor': null, 'jjjj': null, 'outputPowerMax': '43.92', 'lostList': [ { 'name': '光伏裝置缺陷', 'power': null, }, { 'name': '其他未查明', 'power': '0.1', }, { 'name': '廠外因素', 'power': null, }, { 'name': '變電裝置缺陷', 'power': null, }, { 'name': '外部因素', 'power': null, }, { 'name': '未查明降容', 'power': '0.2', }, { 'name': '計劃停運', 'power': '0.3', }, { 'name': '裝置故障', 'power': '0.4', }, { 'name': '限電', 'power': null, }, ], 'ttt': null, 'equivalentHours': '5.0735', 'dayPlantUsePower': null, 'lostPower': { 'total': '0.8928', 'lostList': [ { 'name': '光伏裝置缺陷', 'power': null, }, { 'name': '其他未查明', 'power': '0.2232', }, { 'name': '廠外因素', 'power': null, }, { 'name': '變電裝置缺陷', 'power': null, }, { 'name': '外部因素', 'power': null, }, { 'name': '未查明降容', 'power': '0.2232', }, { 'name': '計劃停運', 'power': '0.2232', }, { 'name': '裝置故障', 'power': null, }, { 'name': '限電', 'power': null, }, ], }, }, { 'date': '2020-04-20', 'genIntegrated': null, 'complantPowerRate': null, 'dayPowerMaxTime': null, 'stationAvailability': null, 'genPlantConsume': null, 'integratedLostEH': '0.0000', 'ggg': null, 'carbonDioxide': '689398750.0000', 'comPlantPower': null, 'slopeAccRadiationSum': '26.31', 'plantLossRate': null, 'genInternet': null, 'resourceInditor': null, 'total': '0.8928', 'theoryPower': '37296.3918', 'topSunshineHours': '7.3073', 'pvMatrixLossHours': '0.0000', 'yyy': null, 'yyyyy': null, 'stationName': '永仁', 'genInverter': '27.5760', 'id': 20200420, 'buyPower': null, 'inverterLostEH': '0.0000', 'resourceValue': '0.03', 'comPR': null, 'plantPowerRate': null, 'markCoal': '276589267.8034', 'internetLostEH': '0.0000', 'powerInditor': null, 'jjjj': null, 'outputPowerMax': '41.54', 'lostList': [ { 'name': '光伏裝置缺陷', 'power': '0.2232', }, { 'name': '其他未查明', 'power': null, }, { 'name': '廠外因素', 'power': '0.2232', }, { 'name': '變電裝置缺陷', 'power': '0.2232', }, { 'name': '外部因素', 'power': null, }, { 'name': '未查明降容', 'power': null, }, { 'name': '計劃停運', 'power': null, }, { 'name': '裝置故障', 'power': null, }, { 'name': '限電', 'power': '0.2232', }, ], 'ttt': null, 'equivalentHours': '5.4028', 'dayPlantUsePower': null, 'lostPower': { 'total': '0.8928', 'lostList': [ { 'name': '光伏裝置缺陷', 'power': '0.2232', }, { 'name': '其他未查明', 'power': null, }, { 'name': '廠外因素', 'power': '0.2232', }, { 'name': '變電裝置缺陷', 'power': '0.2232', }, { 'name': '外部因素', 'power': null, }, { 'name': '未查明降容', 'power': null, }, { 'name': '計劃停運', 'power': null, }, { 'name': '裝置故障', 'power': null, }, { 'name': '限電', 'power': '0.2232', }, ], }, }, ];
var newArr = []; arr.map((item, index) => { newArr.push(...item.lostPower.lostList); }); console.log(newArr, 'dddd'); const a = newArr.filter(one => !one.power); var map = {}; //迴圈查詢 for (let i = 0; i < a.length; i++) { //數組裡的i個元素 var v = a[i].name;var v1 = a[i].power; //將陣列的i個元素作為map物件的屬性檢視其屬性值 var counts = map[v]; //如果map物件沒有該屬性,則設定該屬性的值為1,有的話在其基礎上再+1 if (counts && map[v1] == null) { map[v] += 1; } else { map[v] = 1; } } console.log(map); var end = []; for (const k in map) {if (map[k] == arr.length) { end.push(k); } } console.log(end); const endArr = arr.map((item) => { const newItem = item.lostPower.lostList.map(one => { if (end.indexOf(one.name) > -1) { one = null; } return one; }); return newItem; }); console.log(endArr); var endIndex = []; endArr[0].map((item, index) => { if (!item) { endIndex.push(index); } }); console.log(endIndex);