安利一下柯里化:
const getTotal = function (list) {
return function (day) {
return list.reduce((result, item) => (
result + parseFloat(item[day])
), 0);
};
}
const getWeekdayTotal = getTotal(newData);
// single day
let mondayTotal = getWeekdayTotal("Monday");
let tuesdayTotal = getWeekdayTotal("Tuesday");
// multiple days
let days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
let daysTotal = days.map(getWeekdayTotal);問題是由于刷新頁面之后addRoutes的路由失效了,所以判斷下,然后重新生成路由
好像 semi 才是判斷是否使用分號,no-extra-semi 是判斷是否添加不必要的分號
// no-extra-semi: 2
var a = 1;; // 會修正最后一個分號
// semi: 2
var a = 1 // 會修正加上分號js數(shù)值操過Math.pow(2, 53)會丟失精度的,可以在接收的時候轉(zhuǎn)爲字符串啊
this.move = function () {
this.clears();
this.draw();
var first = this.enemys[0];
var end = this.enemys[this.enemys.length - 1];
var speedX = 1;
if (this.enemys.length > 0 && (end.x + 50 + first.speedX > canvas.width
|| first.x + first.speedX < 0)) {
speedX *= -1;
}
for (let i = 0, leg = this.enemys.length; i < leg; i++) {
var enemy = this.enemys[i];
enemy.x += enemy.speedX;
enemy.speedX *= speedX;
}
requestAnimationFrame(this.move.bind(this));
}
點這個?
所以,每一次db查詢都應被包裹在一個promise中,然后外面使用promise.all. 第二個例子,明顯你還少用了一個promise.All:
下面這段代碼處,也需要創(chuàng)建一個promise數(shù)組,循環(huán)結(jié)束后,執(zhí)行promise.all(promise數(shù)組),then 將結(jié)果使用最外側(cè)的resolve返回。
sql = 'select id FROM product where category like "%,' + _cid + ',%"';
run.executeSql(sql, [], ...
改造后,大概代碼時這個樣子的(并未執(zhí)行過,只是示范):
getProducts(params) {
return new Promise((resolve, reject) =>{
if (params) {
this.getDb().then((db: SQLiteObject) =>{
db.transaction((run) =>{
var sql = 'SELECT * FROM product_content';
run.executeSql(sql, [], (run, res) =>{
if (res.rows.length != 0) {
let result = {
product_ids: {}
};
let retTmp = [];
let exTmp = [1, 2, 100, 600, 500, 800, 900, 700, 701, 300];
let categoryIds = [];
let promise = [];
for (var i = 0; i < res.rows.length; i++) {
promise.push(new Promise((resolve1, reject1) =>{
var product = res.rows.item(i);
categoryIds.push(product.categoryIds);
var innerPromise = [];
for (var k = 0; k < categoryIds.length; k++) {
innerPromise.push(new Promise((resolve2, reject2) => {
var _cid = categoryIds[k];
sql = 'select id FROM product where category like "%,' + _cid + ',%"';
run.executeSql(sql, [], (run, res_id) =>{
if (res_id.rows.length != 0) {
var productids = [];
for (var i = 0; i < res_id.rows.length; i++) {
var productId = res_id.rows.item(i).ID retTmp.push(productId)
// this.helperService.console('c0', productId)
productids.push(productId);
}
resolve2(productids);
} else {
resolve2([]);
}
});
}));
}
Promise.all(innerPromise).then(productIdsArray=>resolve1(productIdsArray));
}))
}
Promise.all(promise).then(res =>{
// setTimeout(() => {
let ATmp = Array.from(new Set(retTmp))
if (newExTmp.length > 0) {
exTmp.map((rettmp, index) =>{
newExTmp.map(extmp =>{
if (rettmp != extmp) {
result.product_ids[newRet] = true
}
})
})
}
resolve(result);
// }, 500)
})
} else {
let result = {
data: {
product_ids: {}
}
};
resolve(result);
}
})
})
})
}
})
}webpack中alias設(shè)置一個別名,例如:
resolve: {
extensions: ['', '.js', '.vue'],
fallback: [path.join(__dirname, '../node_modules')],
alias: {
'src': path.resolve(__dirname, '../src')
}
},排序后 一遍循環(huán)就行
let a= [1,2,3,4,4,5,5,5];
let a2 = []
for(let i=0;i<a.length;i++){
if(i==0||a[i]!=a[i-1]){
a2.push([])
}
a2[a2.length-1].push(a[i])
}你把json,單字符分隔了JSON.parse()都不會??
activity生命周期?
可以這樣寫
setMapValue(index, jndex, value) {
this.$set(this.map[index], jndex, value)
}fs.stat是異步方法,用return方法是獲取不到回調(diào)函數(shù)里的值的。
兩種方案:
fs.statSync
function fileStat(filepath){
var stats = fs.statSync(filepath);
return stats.isFile();
}
function fileStat(filepath, callback) {
// 獲取文件狀態(tài)
fs.stat(filepath, function(err, stats) {
if( err ){
return false;
}
callback( stats.isFile() );
});
}
fileStat('/var/www/a.txt', function(result){
if( result ){
console.log( 'yes' );
}else{
console.log( 'no' );
}
})console都支持一些轉(zhuǎn)義序列來做一些特殊的事情,不同的操作系統(tǒng)終端對轉(zhuǎn)義序列的支持不完全一致,x1B就是ESC的asc碼,后面這些2J什么的,就是某種轉(zhuǎn)義序列,有很多轉(zhuǎn)義序列可以用,比如控制光標,顏色什么的,可以參考維基百科: https://en.wikipedia.org/wiki...
鏈接中可以查到2J就是clear entire screen。
<div class="a b">
</div>
<div class="a-c">
</div>
<div class="a">
<div class="d">
</div>
</div>最后還是解決了, 其實微信瀏覽器里,喚起軟鍵盤后 變化的是document.body.offsetHeight的值,所以 在mounted里 監(jiān)聽上resize事件,就能實現(xiàn)需求了。
有兩種方式可以實現(xiàn):
1,使用eval方式,不推薦,因為會給代碼帶來風險。
2,使用new來做,比如:
var v = "a";
var re = new RegExp("^\\d+" + v + "$","gim");webpack配置文件
var path=require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
var utils = require('./utils'); // 引入獲取文件路徑的函數(shù)
var ROOT = utils.fullPath('../'); // 獲取頂層文件的路徑
console.log(ROOT)
module.exports={
entry:'./src/entry/main.js',
output:{
path: ROOT + '/dist',
filename:'bundle.js'
},
loader: {
rules: [{
test: /\.js[x]?$/,
loader: 'babel-loader',
exclude: /node_modules/
}]
},
resolve: {
extensions: [".js", ".jsx"]
},
plugins: [new HtmlWebpackPlugin({
title: 'mobx-demo222',
template: './src/entry/index.html',
inject: 'head'
})]
}concat 函數(shù)返回新的引用
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。