[JavaScript] ๊ฐ์ฒด
- 1. ๊ฐ์ฒด: ์ฌ๋์ด ๋ณด๊ณ ๋ง์ง๊ณ ๋๋ ์ ์๋ ๋ชจ๋ ๋์
- 2. String๊ฐ์ฒด ํ์ฉ
- 3. length ๊ฐ์ฒด
- 4. charAt (๋ฌธ์์ด ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ ๋ฐํ)
- 5. slice , substring , substr ( ๋ฌธ์์ด ์ถ์ถ)
- 6. indexOf , search , includes (๊ฒ์)
- 7. concat
- 8. trim
- 9. split
- 10. replace
- 11. padStart,padEnd
1. ๊ฐ์ฒด: ์ฌ๋์ด ๋ณด๊ณ ๋ง์ง๊ณ ๋๋ ์ ์๋ ๋ชจ๋ ๋์
๊ฐ์ฒด.์์ฑ(ํค) : ๊ณ ์ ๊ฐ
๊ฐ์ฒด.๋ฉ์๋() : ํ๋
๊ฐ์ฒด๋ชจ๋ธ๋ง: ํ์ค์ธ๊ณ์ ๊ฐ์ฒด๋ฅผ ์ปดํจํฐ ์ธ์ด๋ก ๋ณ๊ฒฝํ๋ ๊ฒ
ํค(์์ฑ): ๊ฐ์ฒด๊ฐ ๊ฐ๊ณ ์๋ ๊ณ ์ ํน์ง์ ๊ธฐ์ ํ ๊ฒ ๋ฉ์๋: ๊ฐ์ฒด๊ฐ ๊ฐ๊ณ ์๋ ๋์
ex) ๊ฐ์ฒด.์์ฑ ๊ฐ์์ง.์์ฑ: ์ข ,์ฑ๋ณ,์ ๊ฐ์์ง.๋ฉ์๋(): ๋ฐ๊ธฐ,๊ฑท๊ธฐ,๊ผฌ๋ฆฌํ๋ค๊ธฐ
๊ฐ์ฒด.์์ฑ: ()๊ฐ ์์
๊ฐ์ฒด.๋ฉ์๋(): ()๊ฐ ๋ฐ๋์ ์์ด์ผํจ ==== ((๊ฐ์ฒด.ํจ์())๋ผ๊ณ ๋ ๋ถ๋ฆ)
ํจ์๋ช
() : ์์ ๊ฐ์ฒด๊ฐ ์๋ค
์ฑ๊ธ ๋ฆฌํฐ๋ ๊ฐ์ฒด
let(count) ๊ฐ์ฒด๋ช
={ํค:๊ฐ}
๊ฐ์ฒด.ํค
let ๊ฐ์ฒด๋ช
={
ํค:๊ฐ,
ํค:๊ฐ,
ํค:๊ฐ,
๋ฉ์๋๋ช
: function(){
์คํ๋ฌธ
}
}
๊ฐ์ฒด๋ช
.ํค
๊ฐ์ฒด๋ช
.๋ฉ์๋()
๊ฐ์ฒด๋ช
["ํค"]
{
let dog = {
name: '์น์์',
age : 3,
color: 'brown',
food: '์ฌ๋ฃ',
eat: function(){
// this: ๊ฐ์ฒด ์๊ธฐ ์์
console.log(`${this.name}๋ ${this.food}๋ฅผ ์ข์ํฉ๋๋ค`)
},
run:function(){
console.log(`${this.name}๋ ๋ฌ๋ฆฐ๋ค`)
},
sleep:function(){
console.log(`${this.name}๋ ์ ์ ์๋ค`)
},
swim:function(){
console.log(`${this.name}๋ ์์์ ํ๋ค`)
}
}
console.log('์ด๋ฆ:',dog.name)
console.log('๋์ด:',dog.age)
console.log('์:',dog['color'])
console.log('๋จน์ด:',dog.food)
dog.eat()
dog.run()
dog.sleep()
}
=> ๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
์ด๋ฆ: ์น์์
๋์ด: 3
์: brown
๋จน์ด: ์ฌ๋ฃ
์น์์๋ ์ฌ๋ฃ๋ฅผ ์ข์ํฉ๋๋ค
์น์์๋ ๋ฌ๋ฆฐ๋ค
์น์์๋ ์ ์ ์๋ค
[Done] exited with code=0 in 0.051 seconds
//์๋์ฐจ ๊ฐ์ฒด ๋ชจ๋ธ๋ง
{
const car = {
name:"ํ
์ฌ๋ผ",
color:"๊ฒ์ ",
price:"7000dollar",
start:function(x){
if(x=='on'){
console.log('์๋์ด ์ผ์ก์ต๋๋ค')
}else{
console.log('์๋์ด ๊บผ์ก์ต๋๋ค')
}
}
}
console.log(`์ด๋ฆ: ${car.name}`);
console.log(`์์: ${car.color}`);
console.log(`์ด๋ฆ: ${car['price']}`);
car.start('on')
// start ๋ฉ์๋ ํธ์ถ on์ด ๋ค์ด๊ฐ๋ฉด console๋ก ์๋์ด ์ผ์ก์ต๋๋ค ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋์ด ๊บผ์ก์ต๋๋ค
}
[Running] node "/workspaces/codespaces-blank/index.js"
์ด๋ฆ: ํ
์ฌ๋ผ
์์: ๊ฒ์
์ด๋ฆ: 7000dollar
์๋์ด ๊บผ์ก์ต๋๋ค
[Done] exited with code=0 in 0.09 seconds
2. String๊ฐ์ฒด ํ์ฉ
๋ด์ฅ๊ฐ์ฒด: String๊ฐ์ฒด : new String(โ๋ฌธ์์ดโ)
/*
์ค๋ฅ๊ฒฐ๊ณผ๊ฐ
*/
{
let userId = prompt('์์ด๋๋ฅผ ์
๋ ฅํด์ฃผ์ธ์');
//abel
if(userId.length>=8&&userId.length<=12){
console.log('์ฌ์ฉ ๊ฐ๋ฅ ํ ์์ด๋ ์
๋๋ค');
}else{
console.log('8~12๊ธ์ ์ฌ์ด๋ก ๋ค์ ์
๋ ฅํด์ฃผ์ธ์');
}
}
=> ๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
8~12๊ธ์ ์ฌ์ด๋ก ๋ค์ ์
๋ ฅํด์ฃผ์ธ์
[Done] exited with code=0 in 0.058 seconds
------------------------------------------------------------------------
/*
์ฑ๊ณต ๊ฒฐ๊ณผ๊ฐ
*/
{
let userId = prompt('์์ด๋๋ฅผ ์
๋ ฅํด์ฃผ์ธ์');
//abelabelabel
if(userId.length>=8&&userId.length<=12){
console.log('์ฌ์ฉ ๊ฐ๋ฅ ํ ์์ด๋ ์
๋๋ค');
}else{
console.log('8~12๊ธ์ ์ฌ์ด๋ก ๋ค์ ์
๋ ฅํด์ฃผ์ธ์');
}
}
=> ๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
์ฌ์ฉ ๊ฐ๋ฅ ํ ์์ด๋ ์
๋๋ค
[Done] exited with code=0 in 0.092 seconds
3. length ๊ฐ์ฒด
{
/*
์ ํ์ฝ๋ 10=> 00010
์ ํ์ฝ๋ 21=> 00021
5์๋ฆฌ๋ณด๋ค ์
๋ ฅ ๋ฐ์ ์๊ฐ ์ ์ผ๋ฉด
์
๋ ฅ๋ฐ์ ์๋ฆฌ์๋บ ๋๋จธ์ง ๋งํผ 000๋ถํ๊ธฐ
*/
const make=(num,size)=>{
let result = '';
num=num.toString();
let len =num.length;
if(len<size){
for(let i=0; i<size-len; i++){
result += '0';
}
return result+num; // return๋ฌธ์ ์ค๋ฐ๊ฟํ๋ฉด ์๋
}
}
//๊ฐ,์๋ฆฟ์
console.log(make(21,5))
}
=>๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
00021
[Done] exited with code=0 in 0.12 seconds
4. charAt (๋ฌธ์์ด ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ ๋ฐํ)
.charAt(์ธ๋ฑ์ค) : ์ธ๋ฑ์ค์ ํด๋นํ๋ ๊ฐ 1๊ฐ๋ง ๋ฐํ
/*
1. user ๋ณ์์ ์ฌ์ฉ์์๊ฒ ์ฃผ๋ฏผ๋ฒํธ ๋ท์๋ฆฌ 7์๋ฆฌ ์
๋ ฅ๋ฐ๊ธฐ (7์๋ฆฌ๊ฐ ์๋๋ฉด ํ์ ์๋ชป๋จ ์ถ๋ ฅ)
2. ์ฒซ๊ธ์ 1๋๋3 ์ด๋ฉด ๋จ์ 2๋๋4๋ฉด ์ฌ์ , ๋๋จธ์ง ์ซ์๋ฉด ๋ฒ์ ์ด๊ณผ
3. ๊ณต๋ฐฑ์ด๋ ๋ฌธ์๊ฐ ๋ค์ด์ค๋ฉด ํ์์ด ์๋ชป.
4. isNaN ์ฌ์ฉ
*/
1๋ฒ ๊ฒฐ๊ณผ
{
let user = prompt('์ฃผ๋ฏผ๋ฒํธ ๋ท์๋ฆฌ๋ฅผ ์
๋ ฅ,7์๋ฆฌ');
//'1154814';
let len = user.charAt(0);
if(user.length===7){
if(len==1||len==3){
console.log(`๋จ์`);
}else if(len==2||len==4){
console.log(`์ฌ์`);
}else if(len==''||isNaN(len)){
console.log(`ํ์์ด ์๋ชป๋์์ต๋๋ค.`);
}else{
console.log(`๋ฒ์ ์ด๊ณผ`);
}
}else{
console.log(`ํ์์ด ์๋ชป๋์์ต๋๋ค.`);
}
}
=> ๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
๋จ์
[Done] exited with code=0 in 0.126 seconds
------------------------------------------------------------------------
2๋ฒ ๊ฒฐ๊ณผ
{
let user = prompt('์ฃผ๋ฏผ๋ฒํธ ๋ท์๋ฆฌ๋ฅผ ์
๋ ฅ,7์๋ฆฌ');
//12525 or ''(๊ณต๋ฐฑ์ผ๋)
let len = user.charAt(0);
if(user.length===7){
if(len==1||len==3){
console.log(`๋จ์`);
}else if(len==2||len==4){
console.log(`์ฌ์`);
}else if(len==''||isNaN(len)){
console.log(`ํ์์ด ์๋ชป๋์์ต๋๋ค.`);
}else{
console.log(`๋ฒ์ ์ด๊ณผ`);
}
}else{
console.log(`ํ์์ด ์๋ชป๋์์ต๋๋ค.`);
}
}
[Running] node "/workspaces/codespaces-blank/index.js"
ํ์์ด ์๋ชป๋์์ต๋๋ค.
[Done] exited with code=0 in 0.054 seconds
5. slice , substring , substr ( ๋ฌธ์์ด ์ถ์ถ)
์ผ๋ถ ๋ฌธ์์ด์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ.
- slice(์์์ธ๋ฑ์ค,์๋ฆฟ์): ์์์ธ๋ฑ์ค๋ถํฐ ๋ง์ง๋ง ์ข ๋ฃ ์ธ๋ฑ์ค ๋ฐ๋ก ์ ๊น์ง ๋ฌธ์์ด ๋ถ๋ฆฌํจ, ์ข ๋ฃ ์ธ๋ฑ์ค๊ฐ ์์์ด๋ฉด ์ข ๋ฃ, ์ธ๋ฑ์ค๋ฅผ ๋ค์์๋ถํฐ ๊ณ์ฐ(์์๊ฐ ์กด์ฌํจ)
- substring(์์์ธ๋ฑ์ค,์ข ๋ฃ์ธ๋ฑ์ค-1): slice()์ ๋์ผํ๋ค ๋จ, ์์๊ฐ ์กด์ฌํ์ง ์๋๋ค
- substr(์์์ธ๋ฑ์ค,๊ธ์์)
{
let str = `์๋
ํ์ธ์ํ๊ธธ๋์
๋๋ค`;
//slice()
console.log(str.slice(2));
console.log(str.slice(undefined)); // undefinded๋ ๋ชจ๋์ถ๋ ฅ
console.log(str.slice(0));
console.log(str.slice(-4,-1));
}
=> ๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
ํ์ธ์ํ๊ธธ๋์
๋๋ค
์๋
ํ์ธ์ํ๊ธธ๋์
๋๋ค
์๋
ํ์ธ์ํ๊ธธ๋์
๋๋ค
๋์
๋
[Done] exited with code=0 in 0.053 seconds
------------------------------------------------------------------------
{
let str = `์๋
ํ์ธ์ํ๊ธธ๋์
๋๋ค`;
//substring()
console.log(str.substring(1,3));
console.log(str.substring(-1,-3)); // ์์๋ ์ ์ฉ์๋๋ค
console.log(str.substring(undefined)); // undefined๋ ๋ชจ๋์ถ๋ ฅ
}
=> ๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
๋
ํ
์๋
ํ์ธ์ํ๊ธธ๋์
๋๋ค
[Done] exited with code=0 in 0.059 seconds
------------------------------------------------------------------------
{
let str = `์๋
ํ์ธ์ํ๊ธธ๋์
๋๋ค`;
//substr()
console.log(str.substr(1,1));
console.log(str.substr(1,4));
console.log(str.substr(2,6));
}
=>๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
๋
๋
ํ์ธ์
ํ์ธ์ํ๊ธธ๋
[Done] exited with code=0 in 0.059 seconds
ํ์ฉ
/* slice๋ก ์ฃผ๋ฏผ๋ฒํธ๋ฅผ ์
๋ ฅ๋ฐ๊ณ ์ถ๋ ฅํด๋ณด๊ธฐ */
{
let user = prompt('์ฃผ๋ฏผ๋ฒํธ ์์๋ฆฌ 6์๋ฆฌ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์');
if(user.length===6){
let y = user.slice(0,2);
let m = user.slice(3,4);
let d = user.slice(5,6);
console.log(user)
console.log(`๋น์ ์ ์์ผ์ 19${y}๋
${m}์ ${d}์ผ ์
๋๋ค`)
}else{
console.log('์๋
์์ผ 6์๋ฆฌ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์')
}
}
=>๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
960309
๋น์ ์ ์์ผ์ 1996๋
3์ 9์ผ ์
๋๋ค
[Done] exited with code=0 in 0.054 seconds
6. indexOf , search , includes (๊ฒ์)
indexOf(โ๋ฌธ์โ) : ํด๋น๊ฐ์ด ์์ผ๋ฉด -1 ์ ๋ฐํํจ
search(โ๋ฌธ์โ) : ํด๋น๊ฐ์ด ์์ผ๋ฉด -1 ์ ๋ฐํํจ
.includes(โ๋ฌธ์โ) : ํด๋น ๋ฌธ์์ด์ ํฌํจ๋์ด ์๋์ง ๊ฒฐ๊ณผ true/false;
{
/* indexOf */
let str = `์๋
ํ์ธ์ ์ ๋ ํ๊ธธ๋์
๋๋ค ์ค๋์ ๊ธ์์ผ` // ํด๋น ๋ฌธ์์ ์์น
if(str.indexOf('ํ๊ธธ๋')!=-1){
console.log(`ํด๋น ๋จ์ด๊ฐ ์กด์ฌํจ`)
}else{
console.log(`ํด๋น ๋จ์ด๋ฅผ ๊ฒ์ํ ์ ์์`)
}
}
=>๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
ํด๋น ๋จ์ด๊ฐ ์กด์ฌํจ
[Done] exited with code=0 in 0.053 seconds
------------------------------------------------------------------------
{
/* search */
let str = `์๋
ํ์ธ์ ์ ๋ ํ๊ธธ๋์
๋๋ค ์ค๋์ ๊ธ์์ผ` // ํด๋น ๋ฌธ์์ ์์น
if(str.search('์กํ๊ต')!=-1){
console.log(`ํด๋น ๋จ์ด๊ฐ ์กด์ฌํจ`)
}else{
console.log(`ํด๋น ๋จ์ด๋ฅผ ๊ฒ์ํ ์ ์์`)
}
}
=>๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
ํด๋น ๋จ์ด๋ฅผ ๊ฒ์ํ ์ ์์
[Done] exited with code=0 in 0.051 seconds
------------------------------------------------------------------------
{
/* includes */
let str = `์๋
ํ์ธ์ ์ ๋ ํ๊ธธ๋์
๋๋ค ์ค๋์ ๊ธ์์ผ` // ํด๋น ๋ฌธ์์ ์์น
if(str.includes('ํ๊ธธ๋')){
console.log(`ํด๋น ๋จ์ด๊ฐ ์กด์ฌํจ`)
}else{
console.log('ํด๋น ๋จ์ด ๊ฒ์ ๋ถ๊ฐ')
}
}
=>๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
ํด๋น ๋จ์ด๊ฐ ์กด์ฌํจ
[Done] exited with code=0 in 0.053 seconds
7. concat
concat(โ๋ฌธ์์ดโ) : ๋ฌธ์์ด ํฉ์น๊ธฐ
{
let str1 = '์๋
ํ์ธ์';
let str2 = '๋๋ ํ๊ธธ๋';
let msg1 = str1.concat(str2);
let msg2 = str1+str2; // ์ด๊ฑฐ์ ๊ฐ๊ณ ๋ฐฐ์ด์ ๋ง์ด ์ด๋ค.
console.log(msg1);
console.log(msg2);
}
=>๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
์๋
ํ์ธ์๋๋ ํ๊ธธ๋
์๋
ํ์ธ์๋๋ ํ๊ธธ๋
[Done] exited with code=0 in 0.064 seconds
8. trim
trim() : ๋ฌธ์์ด ๊ธฐ์ค ์์ชฝ ๊ณต๋ฐฑ ์ ๊ฑฐ
trimStart() : ๋ฌธ์์ด ๊ธฐ์ค ์๋ถ๋ถ๋ง ๊ณต๋ฐฑ ์ ๊ฑฐ
trimEnd() : ๋ฌธ์์ด ๊ธฐ์ค ๋ท๋ถ๋ถ๋ง ๊ณต๋ฐฑ ์ ๊ฑฐ
{
/* trim,trimStart,trimEnd */
let str = ` ์๋
ํ์ธ์ ๋๋ ๊ธธ๋ `;
let str1 = str.trim();
let str2 = str.trimStart(); // ์๋ถ๋ถ๋ง ๊ณต๋ฐฑ ์ ๊ฑฐ
let str3 = str.trimEnd(); // ๋ท๋ถ๋ถ๋ง ๊ณต๋ฐฑ ์ ๊ฑฐ
console.log(str);
console.log(str1);
console.log(str2);
console.log(str3);
}
=>๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
์๋
ํ์ธ์ ๋๋ ๊ธธ๋
์๋
ํ์ธ์ ๋๋ ๊ธธ๋
์๋
ํ์ธ์ ๋๋ ๊ธธ๋
์๋
ํ์ธ์ ๋๋ ๊ธธ๋
[Done] exited with code=0 in 0.096 seconds
------------------------------------------------------------------------
/* ๋ฌธ์์ด ๊ฐฏ์๋ก ๋ฐํํด์ ๊ฒฐ๊ณผ๊ฐ ๋ค์๋ณด๊ธฐ */
{
/* trim,trimStart,trimEnd */
let str = ` ์๋
ํ์ธ์ ๋๋ ๊ธธ๋ `;
let str1 = str.trim();
let str2 = str.trimStart(); // ์๋ถ๋ถ๋ง ๊ณต๋ฐฑ ์ ๊ฑฐ
let str3 = str.trimEnd(); // ๋ท๋ถ๋ถ๋ง ๊ณต๋ฐฑ ์ ๊ฑฐ
console.log(str.length);
console.log(str1.length);
console.log(str2.length);
console.log(str3.length);
}
[Running] node "/workspaces/codespaces-blank/index.js"
34
11
18
27
[Done] exited with code=0 in 0.062 seconds
9. split
split() : ํน์ ๋์์ผ๋ก ๋ถ๋ฆฌํด์ ๋ฐฐ์ด๋ก ์ฒ๋ฆฌ
csvํ์ผ: ๋ฐ์ดํฐ ๋ชฉ๋ก์ด ํฌํจ๋ ์ผ๋ฐ ํ ์คํธ์ ์ผํ ๋ถ๋ฆฌํ๊ธฐ, ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋
{
let tags = '๊ณผ์,์ฌํ,์ฅ์์,์์ด์คํฌ๋ฆผ';
let arr = tags.split(',');
console.log(typeof(arr));
console.log(arr);
for(let item in arr){ // ๋ฐฐ์ด๋ง ์ฌ์ฉ๊ฐ๋ฅ : ๋ฐฐ์ด์ ์ธ๋ฑ์ค ๋ฒํธ ์ถ๋ ฅ
console.log(`${item}`);
}
for(let item of arr){ // ๋ฐฐ์ด๋ง ์ฌ์ฉ๊ฐ๋ฅ : ๋ฐฐ์ด์ ์์ฑ ์ถ๋ ฅ
console.log(`${item}`);
}
}
=>๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
object
[ '๊ณผ์', '์ฌํ', '์ฅ์์', '์์ด์คํฌ๋ฆผ' ]
0
1
2
3
๊ณผ์
์ฌํ
์ฅ์์
์์ด์คํฌ๋ฆผ
[Done] exited with code=0 in 0.056 seconds
10. replace
replace() : ๋ฌธ์๋ฅผ ๋ฐ๊ฟ์ค(๊ต์ฒด)
{
let str = 'I like orange';
let str1 = str.replace('orange','pink')
let str2 = str.replace('I','You')
console.log(str1)
console.log(str2)
}
=> ๊ฒฐ๊ณผ๊ฐ
[Running] node "/workspaces/codespaces-blank/index.js"
I like pink
You like orange
[Done] exited with code=0 in 0.054 seconds
11. padStart,padEnd
replace() : ๋ฌธ์๋ฅผ ๋ฐ๊ฟ์ค(๊ต์ฒด)
{
/*
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํ์ฝ๋ ๋ฃ์ผ๋ฉด ์๋ฆฌ์ ์ฑ์ธ๋
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ ์ง ๋ฃ์ผ๋ฉด ์๋ฆฌ์ ์ฑ์ธ๋
*/
let str1 = '4';
let str2 = str1.padStart(5,0);
let str3 = str1.padEnd(5,0);
console.log(str2);
console.log(str3);
}
[Running] node "/workspaces/codespaces-blank/index.js"
00004
40000
[Done] exited with code=0 in 0.086 seconds