JavaScript
用map將要判斷的物件陣列成新的陣列
再透過新的陣列去做判斷
var result = array.map(value => value.property)
result = arr.filter(item => !set.has(item.name) ? set.add(item.name) : false);
array.splice(0,1) //刪除index=0的資料
var fileData = new FormData();
fileData.append("key",value) //新增
fileData.delete(key) //刪除
fileData.get(key) //取得值
for (var value of fileData.values()) { //取出全部值
console.log(value);
}
for( index in array){} //index
for( value of array){} //值
for( key in obj){} //key
for( value of obj){}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function demo() {
console.log('Taking a break...');
await sleep(2000);
console.log('Two second later');
}
demo();
var funcA = function(callback){
window.setTimeout(function(){
//要先做的事情........
// 如果 callback 是個函式就呼叫它
if( typeof callback === 'function' ){
callback();
}
}, 0);
};
var funcB = function(){
//等先做的事完成後再做的事情........
};
funcA( funcB ); // 將 funcB 作為參數帶入 funcA()
var array1 = [1, 4, 9, 16];
var array2 = array1.map(x => x * 2);
var array1 = [{"a":1},{"a":2}];
var array2 = array1.map(el => {return el.a*4});
var x = A && B && C
var x = A || B || C
方法1:
var deduped = [ 1, 1, 'a', 'a' ].filter( (el, i, arr) => arr.indexOf(el) === i);
方法2:
var deduped = Array.from( new Set([ 1, 1, 'a', 'a' ]) );
function dedup(arr) {
var hashTable = {};
return arr.filter(function (el) {
var key = JSON.stringify(el); //js的物件key不會分辨 1 與 '1' 所以要用stringify轉換
var match = Boolean(hashTable[key]);
return (match ? false : hashTable[key] = true);
});
}
for( let i = 0; i < 5; i++ ) {
window.setTimeout(function() {
console.log(i);
}, 1000);
}
for( var i = 0; i < 5; i++ ) {
window.setTimeout(function() {
console.log(i);
}, 1000);
}
function sleep(ms) {
console.log("123")
return new Promise(resolve => setTimeout(resolve, ms));
}
var funcC =async function(callback){
await sleep(2000);
// 如果 callback 是個函式就呼叫它
if( typeof callback === 'function' ){
callback();
}
};
funcC(function(){console.log("456")})
for (let i = 0, p = Promise.resolve(); i < 10; i++) {
p = p.then(_ => new Promise(resolve =>
setTimeout(function () {
console.log(i);
resolve();
}, Math.random() * 1000)
));
}
(async function loop() {
for (let i = 0; i < 10; i++) {
await new Promise(resolve => setTimeout(resolve, Math.random() * 1000));
console.log(i);
}
})();
function a(){
var deferred = $.Deferred();
setTimeout(function(){
console.log("status in a:",deferred.state());
//this should trigger calling a or not?
deferred.resolve("from a");
},500);
console.log("a");
return deferred.promise();
}
function b(){
var deferred = $.Deferred();
setTimeout(function(){
console.log("status in b:",deferred.state());
deferred.resolve("from b");
},1000);
console.log("b");
return deferred.promise();
}
//synchronous function
function c(){
var deferred = $.Deferred();
console.log("c");
console.log("status in c:",deferred.state());
deferred.resolve("from c");
return deferred.promise();
}
function test(){
var d = jQuery.Deferred(),
p=d.promise();
//instead of the loop doing the following has the same output
p.then(a).then(b).then(c);
console.log(d)
d.resolve();
}
test();