[Javascript学习99---代码片段收集]
来源:互联网 发布:jsp在线考试系统源码 编辑:程序博客网 时间:2024/05/16 01:18
文件权限修改
var Promise = require("bluebird");var fs = Promise.stringifyAll(require("fs"));function changeFileToNonRootWritable(path) { return fs.chmodAsync(path, "664").catch((err) => { logger.error("chmod '%s' fails: %s", path, err); return Promise.reject(); });}function changeFileToNonRootReadable(path) { return fs.chmodAsync(path, "644").catch((err) => { logger.error("chmod '%s' fails: %s", path, err); return Promise.reject(); });}
更改文件所属群组
var Promise = require('promise');var child_process = Promise.promisifyAll(require('child_process'));function changeGroup(gid /*: string(groupID) */, path /*: filePath */) /*: promise(reject | resolve) */ { if (gid) { var command = "chgrp " + gid + " " + path; logger.info("Executing command ", command); return child_process.execAsync(command).catch(function(err) { logger.error("Could not change group for " + path + " (err: " + err.code + ")"); return Promise.reject(); }); } else { return Promise.resolve(); }}
函数返回函数
// 值得学习函数返回带参数的函数。Mescom.prototype.successfulStatusOrThrow = function successfulStatusOrThrow(message) { return function(response) { if (!hasSuccessfulStatus(response)) { throw new Mescom.MescomError(message, response); } else { return response; } };};// 函数调用mescom.sendAndWaitResponse(msg, mescom.Filter.byId(mescom.messageId.RROM_CONFIGURATION_RESP_MSG))// 注意 mescom.successfulStatusOrThrow("RROM configuration failed") 实际上返回的是一个带参数的匿名函数,所以当前面filter出来的结果就作为这个函数的参数传进去了。 .then(mescom.successfulStatusOrThrow("RROM configuration failed")) .error(logError) .catch(Promise.TimeoutError, handleTimeout);
如果Array里面没有找到string则push该string进去
//场景1function isStrNotInAryThenPush(ary, str) { ary.indexOf(str) != -1 || ary.push(str); //ES6 ary.includes(str) || ary.push(str);}// 场景2var _ = require('lodash');function pushData(collections/*: object */, value, key/*: string */)/*: object */ { (collections[key] || collections[key]=[]).push(value); return collections}pushData({a:[1], b:[2, 4]}, 3, 'c');// => {a:[1], b:[2, 4], c:[3]}// 场景3var _ = require('lodash');_.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { //如果存在就push到存在的数组里,否则就创建新数组push进去 (result[value] || (result[value] = [])).push(key); return result;}, {});// => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
macObjects.map(getMacAddress).some(isSameWithInputMacAddress);
function isSameMacAddress(inputMacAddress) { return onlineImTree.getImTree() .then(nodeFinder.getActiveBtsLNode) .then(compareMacAddressFromActiveLNode); function compareMacAddressFromActiveLNode(activeBtsLNode) { const macObjects = activeBtsLNode ? activeBtsLNode.findByClassPath(ETHIF_R) : []; return macObjects.map(getMacAddress).some(isSameWithInputMacAddress); } function getMacAddress(macObject) { const parameters = macObject.getDecodedParameters(); return parameters ? parameters.macAddr : ''; } function isSameWithInputMacAddress(macAddr) { return macAddr.replace(macReplaceRegex, '') === inputMacAddress.replace(macReplaceRegex, ''); } }
按年保存数据
/** * [groupPrsByYear description] * @param {[type]} arr [description] * @return {[type]:} [{year1:{date: "year1", data:[{d1}, {d2}]}}] */function groupPrsByYear(arr/*: array */) /*: array */{ var mytmpData = {}; (arr||[]).forEach(function(d) { //group data by year. var tmpTime = (moment(d.createtimestamp*1000).format('YYYY')); var tmpFind = _.has(mytmpData, tmpTime); if(tmpFind) { mytmpData[tmpTime]["data"].push(d); }else { mytmpData[tmpTime] = {date:tmpTime, data: [d]}; } });//end (arr||[]).forEach(function(d) return mytmpData;}// 代码可以像下面这样简化:function groupBy_interval(results, interval){ return _.groupBy(results, d => faultCommons.formatDate(d.createtimestamp*1000, interval));}//faultCommons.formatDate 如下:function formatDate(timestamp, interval) { var formats = {day: 'YYYY-MM-DD', isoweek: 'YYYY[-]WW', month: 'YYYY[-]MM', year: 'YYYY', week: 'YYYY[-]ww'}; return timestamp.toString().length === 11 //unix timestamp ? moment(timestamp*1000).format(formats[interval]) : moment(timestamp).format(formats[interval]);}
根据soted数据,filter第一次符合条件的数据。
function find_first_item(obj, srcKey, target) { return _.find(obj, d => faultCommons.isInArray(target, d[srcKey]));}
api 到数据过滤需要item,到Echart函数
function fault_ncdr_chartDraw(data, graph_ID, tableParams) { // var data ={"results": [{"date":"2017-03","stats":[{"name":"NCDR(A&B)","num":39},{"name":"A-Critical","num":20},{"name":"B-Major","num":19},{"name":"C-Minor","num":8},{"name":"Baseline","num":43},{"name":"NCDR Cumulative","num":131},{"name":"A-Critical Cumulative","num":56},{"name":"B-Major Cumulative","num":75},{"name":"Monthly Target","num":0},{"name":"Target Cumulative","num":0}]}, // {"date":"2017-04","stats":[{"name":"NCDR(A&B)","num":0},{"name":"A-Critical","num":0},{"name":"B-Major","num":0},{"name":"C-Minor","num":0},{"name":"Baseline","num":46},{"name":"NCDR Cumulative","num":131},{"name":"A-Critical Cumulative","num":56},{"name":"B-Major Cumulative","num":75},{"name":"Monthly Target","num":0},{"name":"Target Cumulative","num":0}]} // ]}; // filter only needed to be drawed data. var validEchartData = { "NCDR(A&B)":{"name":"NCDR(A&B)","num":[]}, "NCDR Cumulative": {"name":"NCDR Cumulative","num":[]}, "Monthly Target":{"name":"Monthly Target","num":[]}, "Target Cumulative": {"name":"Target Cumulative","num":[]}, "Baseline": {"name":"Baseline","num":[]} }; var ECHAT_NAMES = ["NCDR(A&B)","NCDR Cumulative", "Monthly Target", "Target Cumulative", "Baseline"]; var data_restructure = {inside_data: [], xaxis:[]}; (data.results || []).forEach(function (d, i) { data_restructure["xaxis"].push(d.date); (d.stats||[]).forEach(function (dd) { if (ECHAT_NAMES.indexOf(dd.name) != -1) { validEchartData[dd.name]["num"].push(dd.num); } }); }); data_restructure.inside_data = _.values(validEchartData); ncdr_echart_draw(data_restructure, formatTitleDate(data.interval), graph_ID); draw_table(data, tableParams);}
Function passby object
原boject更改值成功,在Lodash的_.sortBy之后!
函数,先对输入object进行排序,然后对最小的加true标签,其他的加false标签。
我也是稀里糊涂的就实现了这个功能, 但是实在没有明白为什么。
根据打印,lodash 的sortBy之后的结果和原来的obj是完全不一样的,而我的更改是基于sortby之后的结果,为什么obj也跟着变化了?
function test(obj,key) { console.log("obj_orig======\n%j", obj); console.log("obj_sortby=====\n%j", _.sortBy(obj, ['age', 'user'])); console.log("obj_after_sortby=====\n%j", obj); _.sortBy(obj, ['age', 'user']).forEach(function(d, i) { d[key] = (0===i) ? true : false;}); console.log("after_change======\n%j", obj);}var users = [ { 'user': 'Halen', 'age': 48 }, { 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }, { 'user': 'Jack', 'age': 34 }];test(users ,"zzz");运行结果输出==========================obj_orig======[{"user":"Halen","age":48},{"user":"barney","age":36},{"user":"fred","age":40},{"user":"Jack","age":34}]obj_sortby=====[{"user":"Jack","age":34},{"user":"barney","age":36},{"user":"fred","age":40},{"user":"Halen","age":48}]obj_after_sortby=====[{"user":"Halen","age":48},{"user":"barney","age":36},{"user":"fred","age":40},{"user":"Jack","age":34}]after_change======[{"user":"Halen","age":48,"zzz":false},{"user":"barney","age":36,"zzz":false},{"user":"fred","age":40,"zzz":false},{"user":"Jack","age":34,"zzz":true}]
当然上面函数可以这样变化这里写代码片
function add_mapping_key_val(obj, key){ (obj||[]).forEach(function(d, i){ d[key] = (0 === i) ? true : false; });}var users = [ { 'user': 'Halen', 'age': 48 }, { 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }, { 'user': 'Jack', 'age': 34 }];add_mapping_key_val(_.sortBy(users,['age', 'user']),"zzz");
Split a Long Array to smaller arrays use JS
大数组分割成多个小数组
function split_arr(arr, slice_num) { //split arr to subArr by every slice_num var tmpArr = []; while (arr.length > 0) { tmpArr.push(arr.splice(0, slice_num)); } return tmpArr;}
读取某个路径下的文件名,看是否包含需要的名字, 返回该文件的完整路径名。
// get TargetBD filefunction getTargetBD(path) { return fs.readdirAsync(path) .filter(function(fileName) { return /^[Tt]arget[Bb][Dd].*\.xml$/.test(fileName); }) .then(function(list) { if (!list.length) { logger.error("TargetBD not found from " + path); return Promise.reject(); } else if (list.length !== 1) { logger.error("Found " + list.length + " TargetBD files from " + path); return Promise.reject(); } else { logger.info("Found ", list[0]); return Promise.resolve(Path.join(path, list[0])); } });}
0 0
- [Javascript学习99---代码片段收集]
- 代码片段收集
- iPhone代码片段收集
- iPhone代码片段收集
- 代码片段收集
- Android代码片段收集
- iPhone代码片段收集(2)
- PHP之代码片段收集
- JQuery常用代码片段收集
- javascript 代码片段 框架
- javascript 代码片段
- JavaScript 代码片段
- 实用代码片段--Javascript
- Github分享:精心收集的48个JavaScript代码片段,仅需30秒就可理解!
- 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!
- 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!
- 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解
- 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解
- unix高级环境编程学习(一) ---------------基础知识
- 欢迎使用CSDN-markdown编辑器
- C++虚函数表
- [Python] 十六进制整数与ASCii编码字符串相互转换
- Qt之QHostAddress 类的使用
- [Javascript学习99---代码片段收集]
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- Invert Binary Tree
- Python安装httplib2
- 动态加载进阶,从组件到容器
- 数据库的表复制语句SELECT INTO 和 INSERT INTO SELECT
- adb命令capy文件夹中的文件到手机sdcard中
- 解决Eclipse添加新server时无法选择Tomcat8的问题
- 2017/04/24