GVKun编程网logo

循环过滤器转换的Javascript(循环过滤器的原理是什么)

4

针对循环过滤器转换的Javascript和循环过滤器的原理是什么这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展c#–单元测试:如何检查生成的javascript(string)是否是有效的

针对循环过滤器转换的Javascript循环过滤器的原理是什么这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展c# – 单元测试:如何检查生成的javascript(string)是否是有效的javascript、IE中的Javascript堆栈跟踪(或者只是一个简单的Javascript错误)、javascript for java 一个可以让用户通过JAVA调用JAVASCRIPT的JAVA包、javascript – javacscript中的过滤器对象等相关知识,希望可以帮助到你。

本文目录一览:

循环过滤器转换的Javascript(循环过滤器的原理是什么)

循环过滤器转换的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

c# – 单元测试:如何检查生成的javascript(string)是否是有效的javascript

对于单元测试目的:我正在搜索像NUnit这样的测试框架,它可以验证“ javascript”在最常见的浏览器(IE,FF,Chrome,Safari)中是否有效. javascript将从一个类自动创建.

有谁知道在cscharp(c#)中是否有像NUnit这样的测试框架?
当然我在javascript上自己编写测试,所以它应该是好的.

但我只想绝对确定它的有效性.

解决方法

这看起来很有用: http://madskristensen.net/post/Verify-JavaScript-syntax-using-C.aspx

IE中的Javascript堆栈跟踪(或者只是一个简单的Javascript错误)

IE中的Javascript堆栈跟踪(或者只是一个简单的Javascript错误)

我遇到了这个方法来生成一个 Javascript堆栈跟踪(修复IE特定的bug): http://pastie.org/253058.txt这听起来真的很有用,但是当我调用它时,我得到的堆栈跟踪是针对脚本本身的代码的吗?!

可以更改此代码以生成一般堆栈跟踪吗?或者有更好的方法在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;
    };
}

})();

解决方法

此getStackTrace()函数创建函数的堆栈跟踪,您可以从中调用getStackTrace().它不会创建您捕获的错误的堆栈跟踪.例如,您将使用它来试图弄清楚如何调用特定函数:
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 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中的过滤器对象

javascript – javacscript中的过滤器对象

我有包含子对象的对象.我想过滤它们.我编写了一个过滤器代码,但是如何创建一个具有相同关系的新对象. fiddle

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中的过滤器对象的相关知识,请在本站搜索。

本文标签: