文件的子串

时间:2015-06-22 08:03:29

标签: javascript arrays substring

我的文件结构如下:

var file = "a|b|c|d, a|b|c|d, a|b|c|d, a|b|c|d, a|b|c|d";

现在我将提取此文件的所有字母“c”和“d”,并将这些字母放在数组中,结构如下:

   var array = [
                   [a,b,1],
                   [a,b,2],
                   [a,b,3],
                   [a,b,4],
                   [a,b,5]
             ];

我该怎么做?有可能吗?

-------------- EDIT ----------------------

如果我有一个像这样结构的数组?

exArray = [
             ["a":"one", "b":"two", "c":"three", "d":"four"],
             ["a":"five", "b":"six", "c":"seven", "d":"eight"]
          ];

新数组必须是:

var array = [
                       [two,three,1],
                       [six,seven,2]
                 ];

4 个答案:

答案 0 :(得分:3)

要获得所需的输出,这将解决问题:

var file = "a|b|c|d, a|b|c|d, a|b|c|d, a|b|c|d, a|b|c|d";
var array = file.split(", ") // Break up the original string on `", "`
                .map(function(element, index){
                    var temp = element.split('|');
                    return [temp[0], temp[1], index + 1];
                });

console.log(array);
alert(JSON.stringify(array));

split将您的file字符串转换为如下数组:

["a|b|c|d", "a|b|c|d", "a|b|c|d", "a|b|c|d", "a|b|c|d"];

然后,在该数组上调用map,将每个"a|b|c|d"及其在数组中的位置传递给回调,该回调拆分字符串,并返回包含前2个元素的数组,它是id(索引+ 1)。

您也可以稍微改变map中的回调:

.map(function(element, index){
    return element.split('|').slice(0, 2).concat(index + 1);
});

此方法使用相同的拆分,然后使用slice从数组中获取前2个元素,concat使用id从数组slice获取从{{返回的2个元素1}}。
这样,您就不会使用临时变量:

element                // "a|b|c|d"
    .split('|')        // ["a", "b", "c", "d"]
    .slice(0, 2)       // ["a", "b"]
    .concat(index + 1) // ["a", "b", id]

答案 1 :(得分:0)

尝试使用split() functionmap() function

var file = "a|b|c|d, a|b|c|d, a|b|c|d, a|b|c|d, a|b|c|d";

file.split(',').map(function(el, index) { 
   var arr = el.split('|'); 
   return [arr[0], arr[1], index+1]
});

答案 2 :(得分:0)

如果我理解正确,这应该有效:

function transformFile(file) {
    return file.split(',').map(function(el) {
        return el.split('|'); }
    );
}

split()函数将字符串转换为数组,将其参数作为项分隔符。您可以在此处详细了解:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

map()函数接受一个数组并迭代每个项目,以您在回调函数中定义的方式更改它。以下是https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

的参考资料

所以我们正在接受一个字符串,首先我们将它分成四个数组 - 每个包含a|b|c|d字符串。然后我们将每个字符串再次拆分(这次使用|作为分隔符)将a|b|c|d字符串转换为[a, b, c, d]数组。因此,在这些操作之后,我们最终会得到一个数组数组。

答案 3 :(得分:-1)

尝试使用split()和replace()函数。

var file = "a|b|c|d,a|b|c|d,a|b|c|d,a|b|c|d, a|b|c|d";
var NewFile =[];
var i = 1;
file.split(',').forEach(function(el) { 

  NewFile.push( el.replace("c|d", i).split("|"));
  i++;

});
console.log(NewFile);