针对循环过滤器转换的Javascript和循环过滤器的原理是什么这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展c#–单元测试:如何检查生成的javascript(string)是否是有效的
针对循环过滤器转换的Javascript和循环过滤器的原理是什么这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展c# – 单元测试:如何检查生成的javascript(string)是否是有效的javascript、IE中的Javascript堆栈跟踪(或者只是一个简单的Javascript错误)、javascript for java 一个可以让用户通过JAVA调用JAVASCRIPT的JAVA包、javascript – javacscript中的过滤器对象等相关知识,希望可以帮助到你。
本文目录一览:- 循环过滤器转换的Javascript(循环过滤器的原理是什么)
- c# – 单元测试:如何检查生成的javascript(string)是否是有效的javascript
- IE中的Javascript堆栈跟踪(或者只是一个简单的Javascript错误)
- javascript for java 一个可以让用户通过JAVA调用JAVASCRIPT的JAVA包
- javascript – javacscript中的过滤器对象
循环过滤器转换的Javascript(循环过滤器的原理是什么)
在if
的回调函数中仅使用filter()
条件。将user[i]
替换为回调函数参数。
const filteredFriends = users.filter(u => this.isUserExist(u))
确保使用箭头函数,以便this
将在回调函数中继承。如果您需要与没有箭头功能的较早实现兼容,请参见How to access the correct `this` inside a callback?
let filteredFriends = users.filter(user => {
return this.isUserExist(user);
});
,
只需执行以下操作:
const users = ['spray','limit','elite','exuberant','destruction','present'];
let filteredFriends = users.filter(user => this.isUserExist(user));
console.log(filteredFriends);
,
filter
方法需要返回布尔值。您的函数this.isUserExist
似乎就像在if条件中使用的那样。
使用它。
const filteredFriends = users.filter(this.isUserExist);
c# – 单元测试:如何检查生成的javascript(string)是否是有效的javascript
有谁知道在cscharp(c#)中是否有像NUnit这样的测试框架?
当然我在javascript上自己编写测试,所以它应该是好的.
但我只想绝对确定它的有效性.
解决方法
IE中的Javascript堆栈跟踪(或者只是一个简单的Javascript错误)
可以更改此代码以生成一般堆栈跟踪吗?或者有更好的方法在IE中获得堆栈跟踪?
(function () { YOUR_NAMESPACE.getStackTrace = (function () { var mode; try {(0)()} catch (e) { mode = e.stack ? 'Firefox' : window.opera ? 'Opera' : 'Other'; } switch (mode) { case 'Firefox' : return function () { try {(0)()} catch (e) { return e.stack.replace(/^.*?\n/,''). replace(/(?:\n@:0)?\s+$/m,''). replace(/^\(/gm,'{anonymous}('). split("\n"); } }; case 'Opera' : return function () { try {(0)()} catch (e) { var lines = e.message.split("\n"),ANON = '{anonymous}',lineRE = /Line\s+(\d+).*?in\s+(http\S+)(?:.*?in\s+function\s+(\S+))?/i,i,j,len; for (i=4,j=0,len=lines.length; i<len; i+=2) { if (lineRE.test(lines[i])) { lines[j++] = (RegExp.$3 ? RegExp.$3 + '()@' + RegExp.$2 + RegExp.$1 : ANON + RegExp.$2 + ':' + RegExp.$1) + ' -- ' + lines[i+1].replace(/^\s+/,''); } } lines.splice(j,lines.length-j); return lines; } }; default : return function () { var curr = arguments.callee.caller,FUNC = 'function',ANON = "{anonymous}",fnRE = /function\s*([\w\-$]+)?\s*\(/i,stack = [],fn,args,i; while (curr) { fn = fnRE.test(curr.toString()) ? RegExp.$1 || ANON : ANON; args = stack.slice.call(curr.arguments); i = args.length; while (i--) { switch (typeof args[i]) { case 'string' : args[i] = '"'+args[i].replace(/"/g,'\\"')+'"'; break; case 'function': args[i] = FUNC; break; } } stack[j++] = fn + '(' + args.join() + ')'; curr = curr.caller; } return stack; }; } })();
解决方法
function foo() { // debug how this is being called alert(YOUR_NAMESPACE.getStackTrace()); }
或者为您引发的错误添加更多细节:
function foo() { // signal something went wrong var error = new Error("error in foo"); if (!error.stack) error.stack = YOUR_NAMESPACE.getStackTrace(); throw error; }
你不能这样使用它:
try { foo(); } catch (e) { alert(YOUR_NAMESPACE.getStackTrace(e)); }
以下是您可以获得的堆栈信息以及发生错误时从哪些浏览器获取的详细信息:Three Painful Ways to Obtain a Stack Trace in Javascript(Archive.org链接替换死链接)
javascript for java 一个可以让用户通过JAVA调用JAVASCRIPT的JAVA包
今天在看这篇文章《JavaScript:世界上误解最深的语言 》的时候,其中说到,最好的一本Javascript书是《Javascript The Definitive Guide,5th Edition.chm 》,于是就把该书下载下来,下载地址是:http://dl1.csdn.net/down3/20070303/03131557424.chm,看到中间的第二章提到一个“javascript for java”,是一个可以通过JAVA操作JAVASCRIPT的开源JAVA包,下载地址:ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_6R6.zip,主页为:http://www.mozilla.org/rhino/,全部是全JAVA写的,主要是给用户提供可以在JAVA中调用JAVASCRIPT。
个人认为,这个还可以,特别是对于源代码的保存更提供了帮助,因为JAVASCRIPT现在是写在JAVA程序里面,JAVA程序在发布的时候都会经过编译,用户如果不通过特别的工具是看不到源代码,而JAVASCRIPT不是,会全部加载到浏览器里面。不过,这是一个好处,也是一个坏处,如果你有一个很好的设计技巧,而我又需要,且我的使用不会给你的权益带来伤害,那么我就只能够望而远之了,因为我看不到你的源代码。JAVASCRIPT是使交互式操作更加方便的辅助性工具,虽然JAVA的功能很强大,但是有些功能JAVA不好实现,或者是实现起来不那么方面的,但是源代码又需要保护的,这时就可以这个工具。
不过,用这个也会带来一个麻烦,就是又要去熟悉一些东西,这又要花费我们一些时间,毕竟时间是有限的,我们不可能在有限的生命里把无限的知识学尽,选择性是最好的,除非特非必要,没有必要把简单在页面里面就可以实现的JAVASCRIPT,放到JAVA里面去,毕竟还是简单一点好。
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
javascript – javacscript中的过滤器对象
var x = 0 var newobj; function loop(obj,type1,type2) { for (i in obj) { if (obj[i].shape == type1 && obj[i].health == type2) { $('div').append(obj[i].shape + '-' + obj[i].health + '<br>') if (!x) { newobj = obj[i]; } else { newobj.children = obj[i] } x++ } loop(obj[i].children,type2) } } function filter() { loop(obj,'circle','red') } filter() console.log(newobj)
编辑
编辑fiddle,数据清晰,预期结果如下
{ "shape": "circle","health": "red","children": [ { "shape": "circle","health": "red" },{ "shape": "circle","children": [ { "shape": "circle","health": "red" },{ "shape": "circle","health": "red" } ] } ] }
老照片 –
预期结果-
解决方法
首先,让我们创建一个根元素,这样如果第一个元素与过滤条件不匹配,树就不会分裂:
var tree = {"shape":"root","health":"ultraviolet","children":obj}; // obj is your structure in your question
现在removeNode函数将是
function removeNode(victim,parent) { // remove the victim from parent's children var target = parent.children.indexOf(victim); if(target>-1) parent.children.splice(target,1); // add victim's children to parent's children if(victim.children) parent.children = parent.children.concat(victim.children); // don't do this if you need a clone delete(victim); }
并且过滤功能将是
function filter(root,shape,health) { if(root.children) root.children.forEach(function(o) { filter(o,health); if(!(o.shape==shape && o.health==health) && o.shape!="root") { removeNode(o,root); // possible optimization: you Could skip nodes which passed already filter(root,health); } }); }
所以你可以做到
filter(tree,"circle","red");
获得理想的结果.
今天关于循环过滤器转换的Javascript和循环过滤器的原理是什么的讲解已经结束,谢谢您的阅读,如果想了解更多关于c# – 单元测试:如何检查生成的javascript(string)是否是有效的javascript、IE中的Javascript堆栈跟踪(或者只是一个简单的Javascript错误)、javascript for java 一个可以让用户通过JAVA调用JAVASCRIPT的JAVA包、javascript – javacscript中的过滤器对象的相关知识,请在本站搜索。
本文标签: