Skip to content

add camelize , decamelize flatten function to js.md #36

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions js.md
Original file line number Diff line number Diff line change
Expand Up @@ -836,3 +836,58 @@ function transform(tranvalue) {
return str;
}
```
- 数组扁平化
```js
function flatten(arr){
var i,ret=[], len = arr.length;
for(i=0;i<len;i++){

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

还有这里。谢谢

if(Array.isArray(arr[i])){
ret = ret.concat(flatten(arr[i]))
}else{
ret.push(arr[i])
}

}
return ret
}
//[1, [2, [ [3, 4], 5], 6]] => [1, 2, 3, 4, 5, 6]
```
- 字符串驼峰化
```js
/**
* Camelize a string, cutting the string by multiple separators like
* hyphens, underscores and spaces.
*
* @param {text} string Text to camelize
* @return string Camelized text
*/
function camelize(text) {
return text.replace(/^([A-Z])|[\s-_]+(\w)/g, function(match, p1, p2, offset) {
if (p2) return p2.toUpperCase();
return p1.toLowerCase();
});
}
// camelize("some_database_field_name")->'someDatabaseFieldName';
// camelize("Some label that needs to be camelized")-> 'someLabelThatNeedsToBeCamelized';
// camelize("some-javascript-property")->'someJavascriptProperty';
// camelize("some-mixed_string with spaces_underscores-and-hyphens")->'someMixedStringWithSpacesUnderscoresAndHyphens';
```
- 字符串反驼峰化
```js
/**
* Decamelizes a string with/without a custom separator (underscore by default).
*
* @param str String in camelcase
* @param separator Separator for the new decamelized string.
*/
function decamelize(str, separator){
separator = typeof separator === 'undefined' ? '_' : separator;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里也是

return str
.replace(/([a-z\d])([A-Z])/g, '$1' + separator + '$2')
Copy link

@S1ngS1ng S1ngS1ng Dec 18, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

谢谢你的 pr。请把这里的缩进调整下吧。像上面一样,四个就好。文件其他位置也有缩进不对的。我有空了再调吧

.replace(/([A-Z]+)([A-Z][a-z\d]+)/g, '$1' + separator + '$2')
.toLowerCase();
}
// ecamelize("someDatabaseFieldName", " ")->'some database field name';
// decamelize("someLabelThatNeedsToBeCamelized", "-")->'some-label-that-needs-to-be-camelized';
// decamelize("someJavascriptProperty", "_")->'some_javascript_property';
```