当 JS 学了将基本语法练习、观念都学过之後,就开始学找实作练习,透过看老师的作法慢慢拆解每个步骤,而自己再实际撰写语法,将每个任务完成。 而这次的练习,主要是阵列相关的操作语法,除了老师的课程带领外,我会根据左侧按钮的功能,先除查找资料尝试跟着撰写相应的功能,这样一来会使记忆更深刻。
成品
课程来源:
udemy - 20 Web Projects With Vanilla JavaScript
forEach()
来将阵列资料呈现到画面map()
计算金额的倍数filter()
筛选出符合条件的资料sort()
用来排序资料reduce()
计算阵列中资料的累加结果https://randomuser.me/api
async function getRandomUser() {
const res = await fetch('https://randomuser.me/api'); //执行完後发出promise
const data = await res.json();
//查看取得的资料,并从中选择要用的部分
//console.log(data);
const user = data.results[0];
//创造新的使用者,并建立新的物件
const newUser = {
name: `${user.name.first} ${user.name.last}`,
money: Math.floor(Math.random() * 1000000)
};
console.log(newUser);
addData(newUser);
}
data
//将新建立的物件(newUser)放入阵列中
function addData(newObj) {
//这里的data是在最前面所宣告的 初始阵列
data.push(newObj);
//不放入参数,使用预设data
updateDOM();
}
forEach()
来呈现画面的资料
div
并增加class给他innerHTML
插入内容//将新创立的物件输出呈现到画面上(dom)
function updateDOM(provideData = data) {
console.log(provideData);
//清除main区域的div
main.innerHTML = `<h2><strong>Person</strong> Wealth</h2>`;
provideData.forEach(item => {
const element = document.createElement('div');
//在新div增加class
element.classList.add('person');
element.innerHTML = `<strong>${item.name}</strong> ${item.money}`;
main.appendChild(element);
})
}
updateDOM()
参数的回传的资料function updateDOM(provideData) {
console.log(provideData);
}
function updateDOM(provideData = data) {
console.log(provideData);
}
//将回传的随机数字,转换为金钱格式 -https://stackoverflow.com/questions/149055/how-to-format-numbers-as-currency-strings
function formatMoney(Money) {
return '$' + Money.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');;
}
formatMoney()
要放入刚刚forEach所传入的金额,从这边去调整数字的格式element.innerHTML = `<strong>${item.name}</strong> ${formatMoney(item.money)}`;
map()
建立 double money事件//double money
function doubleMoney() {
data = data.map(item => {
return { ...item }
});
//console.log(data);
}
//double money
function doubleMoney() {
data = data.map(item => {
return { ...item, money: item.money * 2 }
});
console.log(data);
}
sort
来建立排名
//sortEvent
function sortEvent() {
data = data.sort((a, b) => {
return b.money - a.money;
});
//console.log(data);
updateDOM();
}
JS 将阵列 Array 重新排列的 sort(),参考此文章来制作排名按钮的功能。
filter
筛选百万以上的人员function filterMillionaires() {
data = data.filter((item) => {
return item.money > 1000000;
});
updateDOM();
}
reduce 的基础语法
arr.reduce(callback[accumulator, currentValue, currentIndex, array], initialValue)
reduce()
所回传的参数资料後...accumulator += currentValue.money
//calculateMoney
function calculateMoney() {
const reduceArr = data.reduce((accumulator, currentValue) => {
//console.log(accumulator);
// console.log(currentValue.money);
return accumulator += currentValue.money;
}, 0);
const totalEl = document.createElement('div');
totalEl.innerHTML = `<h3>Total Wealth: <strong> ${formatMoney(reduceArr)} </strong> </h3> `;
main.appendChild(totalEl);
}
过度拟合(Overfitting) 昨天我们把模型变得更复杂,让训练的Loss变得更低,但当我们把模...
「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的...
看完这篇文章你会得到的成果图 此篇文章的范例程序码 github https://github.co...
前言 前两篇文章讲了储存多个值的 Array、Dictionary, 现在来看看如何在 SwiftU...
@mixin 与 @include @mixin通常与@include一起使用, @mixin用来定...