最近很多小伙伴都在问有没有更好的方法在JavaScript中执行可选函数参数?[重复]和js可选参数这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展java–有没有更好的方法来处理
最近很多小伙伴都在问有没有更好的方法在JavaScript中执行可选函数参数?[重复]和js 可选参数这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展java – 有没有更好的方法来处理将多个参数传递给方法、Javascript - 有没有更好的方法根据字符串的长度拆分字符串?、javascript – 使用parent()三次,有更好的方法吗?、javascript – 保持我的网站更新 – 有更好的方法吗?等相关知识,下面开始了哦!
本文目录一览:- 有没有更好的方法在JavaScript中执行可选函数参数?[重复](js 可选参数)
- java – 有没有更好的方法来处理将多个参数传递给方法
- Javascript - 有没有更好的方法根据字符串的长度拆分字符串?
- javascript – 使用parent()三次,有更好的方法吗?
- javascript – 保持我的网站更新 – 有更好的方法吗?
有没有更好的方法在JavaScript中执行可选函数参数?[重复](js 可选参数)
我一直像这样处理JavaScript中的可选参数:
function myFunc(requiredArg,optionalArg){
optionalArg = optionalArg || 'defaultValue';
// Do stuff
}
有更好的方法吗?
有没有在这种情况下使用||
会失败的情况?
java – 有没有更好的方法来处理将多个参数传递给方法
/** * Redirect to a MVC controller&action * @param controller * @param action */ public void redirect(String controller,String action) { redirect(controller,action,new HashMap<String,String>()); } /** * Redirect to a MVC controller&action with extra URL parameters * @param controller * @param action * @param data */ public void redirect(String controller,String action,Map<String,String> data) { String urlParameters = ""; for(String key : data.keySet()) { urlParameters += "&" + key + "=" + data.get(key); } m_binder.putLocal("RedirectParams","IdcService=MVC_FRONTCONTROLLER&controller="+controller+"&action="+action + urlParameters); }
要调用第二种方法,我实际上需要创建一个hashmap来在其中添加数据,我想知道是否有更方便的方法来实现这一点?
正如您所看到的,我需要知道密钥和值,因此varargs不起作用(据我所见).
我对所有想法持开放态度,包括使用反思.
解决方法
@SuppressWarnings("unchecked") public static <K,V> Map<K,V> mapOf(K key,V value,Object... morePairs) { Map<K,V> map = new HashMap<K,V>(); map.put(key,value); for (int i=0; i<morePairs.length; i+=2) { map.put((K)morePairs[i],(V)morePairs[i+1]); } return map; }
然后你可以使用以下方法创建地图:
Map<String,String> map = mapOf("One","1","Two","2");
然而,这不是每个人的一杯茶(因为缺乏类型安全性),所以你可以改变实施来成对:
Map<String,String> map = mapOf(pair("One","1"),pair("Two","2"));
将pair定义为静态方法,创建包含两个值的简单对象,然后将mapOf转换为Map中的Entries.
Javascript - 有没有更好的方法根据字符串的长度拆分字符串?
如何解决Javascript - 有没有更好的方法根据字符串的长度拆分字符串??
我用字符串表示一天中的时间,即。 (830、1450、1630)。我知道我可以做简单的 if 语句来检查长度是 3 还是 4 并退出 (8) 和 (30) 或 (14) 和 (50),但是有没有更干净的方法来分割小时和分钟而不用必须检查 if 语句?
解决方法
Regular Expressions 有一个简单的方法,虽然语法看起来有点奇怪。
/^(\d{1,2})(\d{2})$/
/ / starts/stops regex definition
^ matches from the start of the string (not a random middle location)
( )( ) match two groups
\d a digit...
{1,2} that needs to exist 1 or 2 times
\d a digit...
{2} that needs to exist two times
在代码中使用,它看起来像这样:
const times = ["830","1520","1015"];
const regex = /^(\d{1,2})(\d{2})$/;
const extractTime = (s) => s.match(regex).slice(1,3);
times.map(extractTime).forEach(([hours,minutes]) => console.log({
hours,minutes
}))
String.prototype.slice 提供了一种简单的方法来做到这一点,因为负数被解释为从字符串的末尾开始。
minutes = s.slice(-2) // last two characters of s
hours = s.slice(0,-2) // from first character up to but not including last two characters
,
如果你知道你的时间总是以 HH:mm 表示,你可以填充字符串然后切片。
const parseTime = (time: string): [string,string] => {
const timePadded = time.padStart(4,0)
return [timePadded.slice(0,2),timePadded.slice(2,4)]
}
parseTime("830") # ["08","30"]
parseTime("1430") # ["14","30"]
,
const a = [830,1450,1630];
a.forEach((item) => {
console.log(''Hour = '' + (''0'' + item).slice(-4).substring(0,2) + '' Minute = '' + item.toString().slice(-2));
});
a.forEach((item) => {
console.log(''Hour = '' + (''0'' + item).slice(-4,-2) + '' Minute = '' + item.toString().slice(-2));
});