[javascript]-wecode 4日目



arrow-function

//ES5
function getName(name) {
  return name;
}

//ES6
const hi = name => { return name };
const hi = name => name;
矢印関数を使用する場合は、コールバックでreturnを使用する必要はありません.
知らない事実!

オブジェクト重複文の作成


Object.keys()
const obj = {
  name: 'melon',
  weight: 4350,
  price: 16500,
  isFresh: true
}

Object.keys(obj) // ['name', 'weight', 'price', 'isFresh']
Object.keysはキー値のみをもたらします.
ソースコードの問題
Object.values
値は値のみをもたらします.
Object.entries
const values = Object.values(obj)
// values === ['melon', 4350, 16500, true]

const entries = Object.entries(obj)

/*
entries === [
  ['name', 'melon'],
  ['weight', 4350],
  ['price', 16500],
  ['isFresh', true]
]
*/
キー、値からなる2 D配列を返します.

重複除外とアレイの統合

let union = keyScores.concat(requiredClasses)
union = union.filter((item, idx) => union.indexOf(item) === idx)
2つの配列を結合し、filter、indexOfを使用して重複値を除去します.

配列とオブジェクトの処理

const salesArr = [["20190401", 34], ["20190402", 23], ["20190403", 29]]
const reviewArr= [["20190328", 3], ["20190401", 0], ["20190403", 1]]
const likeArr = [["20190328", 98], ["20190401", 102], ["20190403", 125]]

function getData(salesArr,reviewArr,likeArr){
  let sumAmount = null
  let sumReview = null
  let sumLike = null
  let dateArr = []
  let i = 0;

  for(let i=0; i < arguments.length; i++){
    for(let j=0; j < arguments[i].length; j++){
     dateArr.push(arguments[i][j][0])
    }
  }
 dateArr = dateArr.filter((item, idx) => dateArr.indexOf(item) === idx)

let objData = new Object()

for(let date of dateArr){
  objData[date] = {
    sumAmount,
    sumReview,
    sumLike
  }

  for(let val in salesArr){
   if(salesArr[val].indexOf(date) === 0){
   objData[date].sumAmount = salesArr[val][1]
   }
  }
  for(let val in reviewArr){
   if(reviewArr[val].indexOf(date) === 0){
   objData[date].sumReview = reviewArr[val][1]
   }
 }
   for(let val in likeArr){
   if(likeArr[val].indexOf(date) === 0){
   objData[date].sumLike = likeArr[val][1]
   }
 }
}
console.log(objData)
return objData
}

getData(salesArr,reviewArr,likeArr)
配列がありません.reduceはインデックスを指定する必要があります.
コンサートで「二重forゲート」のように撮るのは難しい
sales,review,likeの各配列には2つの次元の日付と値があり,日付をpropertyとして3つのpropertyを与える.DateArrが作成され、3つの配列のすべての日付が取得されます.3つの配列があるので論拠を与えた.3つのマージできない配列に撒かれた日付を取得する方法はありますか?
次に、filterとindexOfを使用してアレイ内の重複を除去し、objDataを生成します.
次に、dateArrをforとしてobjData[date]をオブジェクト属性として付与する.ここから本当に半日歩いて、問題は今3つの配列ごとに回転して、日付に適当な値をあげて、問題はfor ofの中のdate値を基準に探します!だからドアの外でやりたいのですが、日付値を基準にするのは難しいので、ofの中にfor inを3つ使いました.本当に煩わしくて疲れましたが、コンソールウィンドウに値段が印刷されていたのでとても幸せで、叫びたくなるほど・・・このような楽しみも一時的なもので、次のコードを再制定して、私はこれが何なのかを考え始めて、楽しみと喜び、これもコードでしょう!ブーブー!

配列とオブジェクトの処理

let scores ={
  '생활속의회계': 'C',
  '논리적글쓰기': 'B',
  '독일문화의이해': 'B+',
  '기초수학': 'D+',
  '영어회화': 'C+',
  '인지발달심리학': 'A+'
  }
  
let requiredClasses = ['영어회화', '기초수학', '공학수학', '컴퓨터과학개론']

function getExamResult(scores, requiredClasses){

let keyScores = Object.keys(scores)
let union = keyScores.concat(requiredClasses)
union = union.filter((item, idx) => union.indexOf(item) === idx)

for(let name of union){
if(scores[name] === undefined){
scores[name] = 0
 }
   if(scores[name] === "A+"){
    scores[name] = 4.5
  } else if(scores[name] === "A"){
     scores[name] = 4
  } else if(scores[name] === "B+"){
     scores[name] = 3.5
  } else if(scores[name] === "B"){
     scores[name] = 3
  } else if(scores[name] === "C+"){
     scores[name] = 2.5
  } else if(scores[name] === "C"){
     scores[name] = 2
  } else if(scores[name] === "D+"){
     scores[name] = 1.5
  } else if(scores[name] === "D"){
     scores[name] = 1
  } else if(scores[name] === "F"){
     scores[name] = 0
  }
 }
return scores
}

getExamResult(scores, requiredClasses)
scoreオブジェクトの専攻は科目で、値は点数です.まずstrの値を点数に変換し、scrooeオブジェクトプロパティにない科目を必要な編成科目に追加し、点数を0にします.
まず,配列要素とオブジェクト要素との間を切り替えることが困難である.昨日は本当に難しかったけど、一日経ったら何か難しかったことを忘れてしまった.もう一度解いてみる
要するに、まずscoreにkeyのみをインポートする配列を作成し、required lanconcat、filter、indexOfを使用して重複を除去する新しい配列を作成します.次に、unionは新しいカリキュラムでfor of文を指定し、nameはpropsを指定します.では、スコアオブジェクトでも使用できます.これにより、スコア[name]==0は定義されず、すなわち、スコアに科目がない場合、スコア[name]=0はpropertyと値として追加される.そして点数をifに変換!
ifのようにオブジェクトを使用できます.新しいオブジェクトを作成して、置換するオブジェクトを指定します.オブジェクト[[property name]を使用する必要があります.
2つのfor inで答えられる質問!もう一度解いてみます.
索引の検索
let idxOfC = -1
let arr = ["a", "b", "c", "d"]

arr.forEach((el,idx) => {
if(el === "c"){
idxOfC = idx
return
}
})
console.log(idxOfC)
ソース:上記のコードの問題
アレイ要素をmapに変換
const arr = [123, 2, 12, 124, 5, 100]
function moreThan100(arr){

const newArr = arr.map(num => {
  if(num >= 100){
  return true
  }
  else return false
}) 
  
return newArr
}
console.log(moreThan100(arr))
ソース:上記のコードの問題
strと配列をmapに変換
const date = ['2019-03-21', '2019-04-21', '2019-05-21']

function formatDate(date){
const newDate = date.map((str, i) => {
    return `${str.split("-")[0]}년 ${str.split("-")[1]}월 ${str.split("-")[2]}일`
})

return newDate
}


formatDate(date)

// const nickname = "kim"
// const interest = "방탈출,테니스,멍 때리기"
// const handleEdit = (nickname, interest) =>{

// const arrInter = interest.split(",")

// return {
//  nickname: nickname,
//  interests: arrInter,
//  bio: `제 닉네임은 ${nickname}입니다. 취미는 ${interest}입니다.`
// }
// }

// console.log(handleEdit(nickname, interest))


// const arr = [123, 2, 12, 124, 5, 100]
// function moreThan100(arr){

// const newArr = arr.map(num => {
//   if(num >= 100){
//   return true
//   }
//   else return false
// }) 
  
// return newArr
// }
// console.log(moreThan100(arr))