我正在尝试过滤一个数组以构建另一个数组,并得到我得到的结果。但到目前为止,我一直在使用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];
从这个数组我想构建两个不同的数组,一个用于salt,另一个用于当前。
我曾尝试在其上使用带有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);
另外,我一直试图读取字符串的第一部分直到点,然后在该结果上构建一个数组。使用例如数组过滤器,但我还没弄清楚如何直到点读。
我将很感激如何解决这个问题。
此致
答案 0 :(得分:2)
我会做更多的事情。
var plotsArray = [];
for (var i=0; i<data.length; i++){
if(data[i].indexOf('salt') >= 0){
plotsArray.push(data[i]);
}
console.log('plotsArray: '+plotsArray);
答案 1 :(得分:1)
答案 2 :(得分:1)
我认为你的测试应该是:
return a.split(".")[0] == "salt";
或
return a.indexOf("salt") == 0;
后者可能更好,因为在其中一个数组值不包含点的情况下它不会出错。
答案 3 :(得分:1)
使用你的代码我会这样做:
var plotsArray = [];
plotsArray.push($.grep(data, function(n,i){
return n.split(".")[0] !== "salt";
}));
请确保数据数组包含字符串。
答案 4 :(得分:0)
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]);
}
}
答案 5 :(得分:0)
使用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]}
);
答案 6 :(得分:0)
试试这个: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']);