我的文件结构如下:
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]
];
答案 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()
function和map()
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);