倒著刪除 從后往前刪試試
數(shù)組也是對象,不信[] instanceof Object試試。for-in遍歷的是鍵,而for-of遍歷的是可迭代對象的值,你可以用for-in遍歷對象和數(shù)組,但只能用for-of遍歷數(shù)組。
你定義的vue對象已經(jīng)賦值給example1,所以在example1當(dāng)中可得到變量。example1.counter
使用filter可以方便的解決此問題
$scope.arr = $scope.arr.filter(item => !['aa', 'bb', 'cc', 'ee', 'dd'].includes(item));經(jīng)過一個下午的折騰,上周五還是發(fā)現(xiàn)出現(xiàn)該異常情況的原因。概括來說還是中文轉(zhuǎn)編碼的問題,即utf-8轉(zhuǎn)gbk出現(xiàn)的小部分行缺少空格或者雙引號的問題。
出現(xiàn)問題的原因:
在進(jìn)行導(dǎo)出的過程中,接收其他程序傳過來的數(shù)組參數(shù),均為utf-8編碼,我這邊在調(diào)用fwrite或者fputcvs寫入文件的過程中并沒有進(jìn)行 iconv("UTF-8", "GB2312//IGNORE", $header),而是將文件保存在了 export目錄下,然后由vuejs做的后臺調(diào)用位于同application下的一個共用類的 export方法,該方法是這樣的:
public function export()
{
$file = \Request::get('file');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=export.csv');
header('Cache-Control: max-age=0');
$contents = file_get_contents(\Env::get('runtime_path') . '/export/' . $file);
echo iconv("UTF-8", "GB2312//IGNORE", $contents);
@unlink(RUNTIME_PATH . '/export/' . $filename);
exit;
}
問題就出在 echo iconv("UTF-8", "GB2312//IGNORE", $contents); 這句代碼上面,這里看到是對傳入的整個文件進(jìn)行轉(zhuǎn)編碼的,這里未進(jìn)行測試到底多少行的數(shù)據(jù)會出現(xiàn)缺少逗號引號的問題。
最終的解決思路是,把共用類中對整個文件的轉(zhuǎn)編碼放到寫入方法中,逐條轉(zhuǎn)編碼就解決了該問題。
更改后的代碼:
public static function createCsv($data, $header = [], $filename = '')
{
// 參數(shù)判斷
$data = is_object($data) ? $data->toArray() : $data;
$header = is_array($header) ? $header : [];
$filename = (1 > strlen(trim($filename))) ? 'csv-' : trim($filename);
if (empty($data)) {
return false;
}
// 文件名/目錄
$filename = $filename . date("YmdHis", time()) . rand(1000, 9999) . ".csv";
$dir = Env::get('runtime_path') . '/export/';
if (!is_dir($dir) && !mkdir($dir)) {
return false;
}
// 打開文件指針資源
$handle = fopen($dir . $filename, 'w+');
if (!$handle) {
return false;
}
// 寫入文件header頭
if (!empty($header)) {
foreach ($header as $key => $item) {
$header[$key] = iconv("UTF-8", "GB2312//IGNORE", $item);
}
$res = fputcsv($handle, $header);
if (!$res) {
return false;
}
}
// 判斷header是索引數(shù)組還是關(guān)聯(lián)數(shù)組
$is_assoc = array_keys($header) !== range(0, count($header) - 1);
// 寫入文件內(nèi)容
$frequency = 0; // 頻率
$limit = 100000;
foreach ($data as $datum) {
$frequency++;
if ($limit == $frequency) {
// 刷新輸出buffer
ob_flush();
flush();
$frequency = 0;
}
// 如果是關(guān)聯(lián)數(shù)組,則獲取內(nèi)容中和頭部key相對應(yīng)的值
if ($is_assoc) {
$csv = "";
foreach(array_keys($header) as $item) {
$datum[$item] = iconv("UTF-8", "GB2312//IGNORE", $item);
$val = str_replace('"', '""', $datum[$item]); // 將單個雙引號替換為兩個雙引號
$csv .= '"' . $val . '",'; // 為每個字符增加雙引號,并添加逗號分割符
}
$csv = substr($csv, 0, -1); // 去掉每行最后一個逗號
$csv .= "\n"; // 添加換行符
$res = @fwrite($handle, $csv);
} else {
$res = fputcsv($handle, $datum);
}
if (!$res) {
return false;
}
}
// 關(guān)閉指針資源
fclose($handle);
return Url::build('erp/Common/export', 'file=' . $filename);
}
public function export()
{
$file = \Request::get('file');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=export.csv');
header('Cache-Control: max-age=0');
$contents = file_get_contents(\Env::get('runtime_path') . '/export/' . $file);
echo $contents;
exit;
}
調(diào)用步驟:
先調(diào)用createCsv生成文件,再調(diào)用export下載。
———————————————————————分割線——————————————————————
另外一種解決思路:
csv文件直接存儲 UTF-8 編碼:
即不需要進(jìn)行 iconv 轉(zhuǎn)編碼,這樣會有個小問題就是MacOS中的Excel無法自動識utf-8編碼,中文會出現(xiàn)亂碼的情況。
原因:
Excel在讀取csv的時候是通過讀取文件頭上的bom來識別編碼的,如果文件頭無bom信息,則默認(rèn)按照unicode編碼讀取。(這個bom是微軟自己定義的一種文件頭部協(xié)定,顧名思義存儲在文件頭部,存儲內(nèi)容就是標(biāo)識文件編碼的信息。)而我們生成csv的平臺不一定遵循微軟的bom協(xié)議,導(dǎo)致如果輸出非unicode編碼的csv文件(例如utf-8),并且沒有生成bom信息的話,Excel自動按照unicode編碼讀取,就會出現(xiàn)亂碼問題了。作者:李蛟 鏈接:https://www.zhihu.com/questio...
來源:知乎 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
根據(jù)知乎查到的答案,原來是這里未遵循微軟的bom協(xié)議。原因找到了,解決方案就能出了。
解決方法:
fopen 方法下寫入bom頭,這里簡單寫一下步驟
function createCsv($filename, $header, $data) {
$handle = fopen($filename, 'w+');
// 添加BOM,標(biāo)識為UTF-8格式
fwrite($handle, chr(0xEF).chr(0xBB).chr(0xBF));
// 寫入頭部
fputcsv($handle, $header);
// 逐行寫入內(nèi)容
foreach ($data as $datum) {
fputcsv($handle, $datum);
}
// 關(guān)閉指針資源
fclose($handle);
}
另外再補充一下 Bom 簡介
- 在UCS 編碼中有一個叫做”ZERO WIDTH NO-BREAKSPACE”的字符,它的編碼是FEFF。
- FFFE在UCS中是不存在的字符,所以不應(yīng)該出現(xiàn)在實際傳輸中。
- UCS規(guī)范建議我們在傳輸字節(jié)流前,先傳輸字符”ZERO WIDTH NO-BREAK SPACE”。
- 這樣如果接收者收到FEFF,就表明這個字節(jié)流是Big-Endian的;
- 如果收到FFFE,就表明這個字節(jié)流是Little-Endian的。
- 因此字符”ZERO WIDTH NO-BREAK SPACE”又被稱作BOM。
- UTF-8不需要BOM來表明字節(jié)順序,但可以用BOM來表明編碼方式。
- 字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8編碼是EF BB BF。
- 所以如果接收者收到以EF BB BF開頭的字節(jié)流,就知道這是UTF-8編碼了。
- Windows就是使用BOM來標(biāo)記文本文件的編碼方式的。
該內(nèi)容來自 http://blog.csdn.net/chaozhi_... 這篇博客
終于在網(wǎng)上找到一個可行的。。。https://blog.csdn.net/phoenix...
用命令行直接連接:
iw dev
ip link set wlo1 up...
親測可以鏈接,就是不知道怎么讓wifi配置在系統(tǒng)設(shè)置界面顯示出來
要讓系統(tǒng)配置顯示wifi,需要安裝
sudo yum install NetworkManager-wifi
:closeOnClickModal= "false" 前面加一個冒號
需要使用javascript
https://stackoverflow.com/que...
這里告訴你,需要手動源碼編譯一波
原理就是:
vue中使用ref可以獲取到真實element,類似于原生的getElementById;而js中又可以通過element.click觸發(fā)元素的點擊事件(前提是這個元素是支持click事件的)。
參考:
ref獲取element
https://cn.vuejs.org/v2/api/#ref
element.click()
https://developer.mozilla.org...
mark下,也有此疑問
好巧啊,我剛好在寫 Vue源碼閱讀 - 批量異步更新與nextTick原理 的文章,剛好涉及了這一塊的內(nèi)容~
這個情況在vue的源碼中尤雨溪也注釋出來了,你可以點進(jìn)去看看,所以在2.5之后的版本更改了這個情況,我這里就翻譯一下:
在2.4之前的版本中,nextTick基本上基于microtask來實現(xiàn)的,但是在某些情況下microtask具有太高的優(yōu)先級
,并且可能在連續(xù)順序事件(例如#4521,#6690)之間或者甚至在同一事件的事件冒泡過程中(#6566)之間觸發(fā)。
但是如果全部都改成macrotask,對一些有重繪和動畫的場景也會有性能影響,如 issue #6813。
這里提供的解決辦法是默認(rèn)使用microtask,但在需要時(例如在v-on附加的事件處理程序中)強制使用macrotask
所以2.4之前不會顯示是因為之前使用microtask來實現(xiàn)的dom事件,它在當(dāng)前tick的macro task執(zhí)行完之后 patch 之前執(zhí)行,所以我猜測是因為 micro task 高優(yōu)先級的原因沒等當(dāng)前tick的變動 patch 渲染到真實dom上就已經(jīng)更改了數(shù)據(jù),因此當(dāng)然不會渲染到真實DOM上了。
而2.5之后的nextTick使用macrotask,是肯定在下個tick之后執(zhí)行的回調(diào),所以在這個回調(diào)執(zhí)行之前input進(jìn)去的內(nèi)容自然會被渲染到真實dom上,所以你看到的就是一閃而過了~
不能,到底部就是說后面沒內(nèi)容了。沒內(nèi)容滾上去看空白頁面嗎?多尷尬。。。
react 的render函數(shù)動態(tài)生成的模板數(shù)據(jù)! a ul 這些都是標(biāo)簽名 動態(tài)生成
441 這屬于它內(nèi)部壓縮給予識別稱呼,可以理解為一個編號 用來識別它到底是那塊部分的內(nèi)容
n 可能是次數(shù)可能是 框都 也是一個變量
你光看壓縮文件 很難推斷出來真實表達(dá)的意思
使用這個chrome插件吧,Sourcegraph for GitHub 安裝完成之后就回出現(xiàn)這個按鈕
點擊就會調(diào)轉(zhuǎn)到 一個在線的IDE可以跳轉(zhuǎn)的
你都會寫這么多了,紅圈部分不至于不會寫吧。
x1, y1 = p1
x2, y2 = p2
持續(xù)訪問必須快,因為nfs網(wǎng)絡(luò)tcp連接在第一次訪問時已經(jīng)建立,后續(xù)的訪問復(fù)用此次建立的連接。
間斷訪問每一次都會重新建立tcp連接,過程會慢,這取決于nfs響應(yīng)速度。
僅個人見解。
把 axios 的代碼放到 app 的 created 勾子中。如下:
const app = new Vue(
{
data: {...},
created() {
// axios 的代碼放在這里
}
}
);
從你的描述上看,app 應(yīng)該是在 axios 后才被定義,或者 app 是一個異步加載的對象。你通過 setInterval 把 axios 的執(zhí)行延遲了,所以 app 出來了,axios 不報錯了
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。