[英]Javascript - Best way to create array with unique elements from another array
[英]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";
要么
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]}
);
试试这个: 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.