在 JavaScript 中,如果要将字符串 "['中国']" 转换成数组形式 ['中国'],可以使用以下几种方法:
1. 使用 JSON.parse()(推荐)
如果字符串是有效的 JSON 格式(例如 '["中国"]'),可以直接用 JSON.parse() 解析:
const str = '["中国"]';
const arr = JSON.parse(str);
console.log(arr); // ["中国"]
console.log(arr[0]); // "中国"
但如果字符串是 "['中国']"(单引号),JSON.parse 会报错,因为 JSON 标准要求字符串必须使用双引号:
const str = "['中国']";
J...
1. 使用 split() 方法
split() 方法是最常用的将字符串分割为数组的方法。
const str = "Hello,World,JavaScript";
const arr = str.split(","); // 按逗号分割
console.log(arr); // ["Hello", "World", "JavaScript"]
// 按每个字符分割
const str2 = "hello";
const arr2 = str2.split("");
console.log(arr2); // ["h", "e", "l", "l", "o"]
2. 使用扩展运算符 (...)
ES6 的扩展运算符可以将可迭代对象(如字符串)展开为数组。
const str = "hello";
const arr = [...str];
console.log(arr); // ["h", "e", "l", "l", "o"]
3. 使用 Array.from() 方法
Array.from...
在 JavaScript 中,parseFloat() 函数如果传入空值(如 null、undefined 或空字符串 "")不会报错,但会返回 NaN(Not a Number)。
具体行为:
空字符串 ""
parseFloat(""); // 返回 NaN
null
parseFloat(null); // 返回 NaN
undefined
parseFloat(undefined); // 返回 NaN
字符串开头非数字
parseFloat("abc123"); // 返回 NaN
有效数字字符串
parseFloat("123.45"); // 返回 123.45
parseFloat("123abc"); // 返回 123(解析到非数字字符停止)
如何避免 NaN?
如果希...
$arr = [
[3,'c'],
[3,'f'],
[3,'d'],
[3,'k'],
[3,'a'],
[7,'b'],
[7,'k'],
[1,'v'],
[4,'a'],
[2,'e'],
[2,'a'],
];
foreach ($arr as $key => $r ) {
$a[$key] = $r[0];
$b[$key] = $r[1];
}
array_multisort($a, SORT_ASC, $b, SORT_DESC, $arr);
echo '<pre>';
print_r($arr);
结果如下:
Array
(
[0] => Array
(
[0] => 1
[1] => v
)
[1] => Array
(
[0] => 2
[1] => e
)
[2] => Array
(
[0] =>...
语法
.表示除n之外的任意字符
+匹配前面的子表达式一次或多次。
(?<=exp)是以exp开头的字符串, 但不包含本身。
(?=exp)就匹配为exp结尾的字符串, 但不包含本身。
注:语句外面的括号不可省略
g匹配全局
获取括号的内容,包换括号
var str="123{456}hhh[789]zzz[yyy]bbb(90ba)kkk";
var regex1 = /((.+?))/g; // () 小括号
var regex2 = /[(.+?)]/g; // [] 中括号
var regex3 = /{(.+?)}/g; // {} 花括号,大括号
// 输出是一个数组
console.log(str.match(regex1)); //['(90ba)']
console.log(str.match(regex2));//['[789]', '[yyy]']
console.log(str.matc...
<div id="videobody" style="background:url(images/bg.jpg);background-size:contain;" width="1024" height="640" align="center">'</div>
if (videojs.getAllPlayers().length > 0) {
var myplayer = videojs('my-video');
myplayer.dispose();
}
var videourl = 'https://xxx.ddd.tv/xxx.m3u8';
$('#videobody').html('<video id="my-video" class="video-js" width="1024" height="640" controlslist="nodownload" disablePictureInPicture></video>');
var myplayer = videojs('my-video', {
controls: true, //是否显示控制条
//poster: 'xxx', //视频封面图地址
preload: 'auto',
au...
本文主要内容分三部分,如果您只需要解决问题,请阅读第一、二部分即可。如果您有更多时间,进一步学习问题相关知识点,请阅读至第三部分。
1. 需求分析
一般情况下,我们在项目中进行代码调试时,往往只会在逻辑中使用console.log进行控制台打印调试。
这种方式虽然比较常规直接,但是如果打印数据多了,就会导致你的控制台消息变得异常混乱。
所以,我们有了更好的选择,那就是console对象提供的其它API,来让我们能够更清晰的区分打印信息。
2. 实现步骤
2.1console.warn
当我们需要区分一些比较重要的打印信息时,可以使用warn进行警告提示。
2.2 console.error
当我们...
混淆的作用就是用无意义的关键字符替代原来有意义的关键字符,让浏览者“看不懂”代码,不了解代码的运行逻辑,也就无法复用。混淆不同于加密解密,因为原来有意义的字符已经被替换了,不存在算法上的反推,任何的技术不可能再得出原来的那些有意义的字符。所以理论上,混淆后的代码无法解密。但因为它的整个运算逻辑关系链是完整的,与混淆前的代码关系链是完全一致的,所以非要“破解”,只能说摸清它的逻辑关系链,人为去做的话,烧脑又复杂。技术上需要一定的运算能力来做这个工作,比如云计算甚至超级计算机,但即便“破解”,它也是只能分析出一个函数大致是干什么用的,原来的关键字符名称还是不可能得出。...
定时器为什么不可靠
在事件循环执行机制中,异步事件会把回调函数放入消息队列中,主线程的宏任务执行完毕后,依次执行消息队列中的微任务,等微任务执行完了再循环回来执行宏任务。由于消息队列中存在大量的任务,其他任务的执行时间就会造成定时器回调函数的延迟,如果不处理,就会一直叠加延迟,当运行时间久了之后,相差就会很大。
因此定时器是不能完全保证的。
怎么解决?
web Worker
浏览器中 JS 都是单线程工作,当在前端执行一些耗时的工作时,页面后续渲染等步骤都会等待,就会导致一些页面的卡顿假死,影响用户体验。
webworker 的出现,就是给js创建多线程的环境。主线程创建worker线程,可以把计算密集型或高延迟的任务交...
需要引入jquery.js和库clipboard.min.js
<div id="needCopyText">待复制的内容</div>
<span class="copyContent" data-clipboard-target="#needCopyText">复制</span>
//引入实例化clipboard.js, 注意这里不要用Clipboard而是ClipboardJS
var clipboard = new ClipboardJS('.copyContent');
clipboard.on('success', function(e) {//如果成功复制的话
//console.log('Action:', e.action);
//console.log('Text:', e.text);
//console.log('Trigger:', e.trigger);
console.log('复制成功');
});
clipboard.on('error', function(e) {//如果复制失败
console.log('复制失败,请...
没啥好说的,直接上代码就完了,都能看懂!
$re = $conn->query("SELECT id,catename FROM category");
if (mysqli_num_rows($re) > 0) {
while ($rs = mysqli_fetch_array($re,MYSQLI_ASSOC)) {
$arr[] = $rs;
}
echo json_encode($arr,JSON_UNESCAPED_UNICODE);
mysqli_free_result($re);
}
顺便说一句,我这里用的PHP版本是7.0以上的。...
此处使用的是php+sqlite
$jsonFile = 'test.json';
if (file_exists($jsonFile)) {
@unlink($jsonFile);
}
$re = $db->query("SELECT id,companyname FROM companylist ORDER BY id DESC");
while ($rs = $re->fetch(PDO::FETCH_OBJ)) {
$jsonArray[] = $rs;
}
$strjson = json_encode($jsonArray,JSON_UNESCAPED_UNICODE);//中文不强制转义
$fp = fopen($jsonFile,'w');//此处$jsonFile可以使用目录等设置
fputs($fp, $strjson);
fclose($fp);...
json文件test.json内容如下:
[{"id":"11","companyname":"公司测试五"},{"id":"10","companyname":"json生成测试"},{"id":"9","companyname":"json不转义测试"},{"id":"8","companyname":"测试公司"},{"id":"7","companyname":"测试公司"},{"id":"6","companyname":"公司测试四"},{"id":"5","companyname":"测试公司"},{"id":&q...
我写的一个用JSP连接MySQL数据库的代码。要正确的使用这段代码,你需要首先在MySQL数据库里创建一username表,表里面创建两个字符型的字段,字段名分别为:uid,pwd,然后插入几条测试数据。以下用两种方式来实现JSP连接MySql数据库。第一种方式,用JSP实现。<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><%//*********************************************** JDBC_ODBC连接MySql数据库,不需要设置数据源***************...
在Web服务器端编程中,会话状态管理是一个经常必须考虑的重要问题。本文分析JSP/Servlet的会话管理机制及其所面临的问题,然后提出了一种改进的会话管理方法。 一、Servlet的会话管理机制 根据设计,HTTP是一种无状态的协议。它意味着Web应用并不了解有关同一用户以前请求的信息。维持会话状态信息的方法之一是使用Servlet或者JSP容器提供的会话跟踪功能。Servlet API规范定义了一个简单的HttpSession接口,通过它我们可以方便地实现会话跟踪。 HttpSession接口提供了存储和返回标准会话属性的方法。标准会话属性如会话标识符、应用数据等,都以“名字-值”对的形式保存。简而言之,HttpSession接口提供了一种...
在开发有关日历的应用程序时,不规则的每月日期数、每周天数和周末的计算一直是个很费脑筋的问题。结果,日期和时间的编程经常令程序员新手畏缩不前。本文将演示在JSP应用程序中日期的用法,为读者完成某些常见任务提供方便的参考。目的示例应用程序的目的是:通过HTML表单把日期参数提交某个JSP页来处理。 接收日期参数并创建Calendar对象。 采用Calendar对象找出提交的日期是一周的第几天以及选中月份里有多少工作日。 用用户易于阅读的显示格式对日期格式化。 环境示例程序代码在Java Web服务器上接受测试,该服务器配置了JDK 1.31。示例写得很标准,在Tomcat或者其他JSP Web服务器(JDK 1.2或者以后版本)上运行的效...