繁体   English   中英

如何使用JavaScript从另一个数组的元素创建数组

[英]How to create an array from elements of another array using javascript

我正在尝试过滤一个数组以使用得到的结果构建另一个数组。 但是到目前为止,我一直在使用jQuery的功能组合还没有奏效。 因此,我将对如何解决此问题提供一些建议。

这是我要实现的示例:

这是我的第一个数组:

var data =[salt.1200, salt.1100, salt.1000, salt.0900, salt.0800, salt.0700, current.1200, current.1100, current.1000, current.0900, current.0800, current.0700];

从这个数组中,我想构建两个不同的数组,一个数组用于盐,另一个数组用于当前。

我尝试过使用带有jQuery grep函数的for循环并将其拆分,但这没有用。

var plotsArray = [];
        for (var i=0; i<data.length; i++){
            plotsArray = jQuery.grep(data, function(a){
                return (a.split(".") == 'salt')
            });
        }
        console.log('plotsArray: '+plotsArray);

另外,我一直试图做的是读取字符串的第一部分直到点,然后根据该结果构建一个数组。 以数组过滤器为例,但是我还没有弄清楚如何读取直到点为止。

对于如何解决此问题,我将不胜感激。

问候,

我会根据此事做更多的事情。

var plotsArray = [];
        for (var i=0; i<data.length; i++){
            if(data[i].indexOf('salt') >= 0){
            plotsArray.push(data[i]);           
        }
        console.log('plotsArray: '+plotsArray);

在这里进行更改-

return (a.split(".")[0] == 'salt')

这样您的代码就会起作用。 工作小提琴-http: //jsfiddle.net/Lh8Pt/

我认为您的测试应该是:

return a.split(".")[0] == "salt";

要么

return a.indexOf("salt") == 0;

后者可能更好,因为在其中一个数组值不包含点的情况下它不会出错。

使用您的代码,我会做:

var plotsArray = [];

plotsArray.push($.grep(data, function(n,i){
   return n.split(".")[0] !== "salt";
}));

并且请确保数据数组包含字符串。

var saltArray = [];
    var currentArray = [];
    for(var i=0;i<data.length;i++){

        if(data[i].split('.')[0]=='salt'){

            saltArray.push(data[i]);

        }else{
           currentArray.push(data[i]);
         }
    }

使用filter/map方法,您可以执行以下操作:

var current = [], 
    salt = data.filter(
            function(a){
              var x = a.split('.'); 
              if (/current/i.test(x[0])) { this.push(x[1]); } 
 //                                        ^ = current
              return /salt/i.test(x[0])
             }, current
 //             ^ context
           ).map(
             function(b){
               return b.split('.')[1]}
           );

关于Array.filter的MDN

试试这个: http : //jsfiddle.net/afEGC/

var data = ['salt.1200', 'salt.1100', 'salt.1000', 'salt.0900', 'salt.0800', 'salt.0700', 'current.1200', 'current.1100', 'current.1000', 'current.0900', 'current.0800', 'current.0700'];

var asplit = new Array();
asplit['salt'] = new Array();
asplit['current'] = new Array();

​jQuery.each(data, 
          function(index,value)
             {
                 var split_value = value.split('.');
                   asplit[split_value[0]].push(split_value[1]);                                 
             });

console.log('salt: ' + asplit['salt']);

console.log('current: ' +​​​​​​​​​​​​​​​​ asplit['current']);​​​​

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM