如何将制表符分隔的数组拆分为两个数组?

时间:2014-10-01 17:09:47

标签: javascript arrays

我有这个数组

array=["product1    250","product2    500","product3    750"]

空格代表制表符。 我想像这样拆分数组..

array_1=["product1","product2","product3"]

array_2=["250","500","750"]

我如何使用Javascript执行此操作?

3 个答案:

答案 0 :(得分:2)

你可以将它们作为一个数组数组,通过在Array.prototype.reduce的数组数组中拆分和收集拆分字符串,你可以访问具有相应索引的各个数组,如下所示

var array = ["product1    250", "product2    500", "product3    750"];

var arrays = array.reduce(function(result, currentItem) {
    var splits = currentItem.split(/\s+/);
    result[0].push(splits[0]);
    result[1].push(splits[1]);
    return result;
}, [[], []]);

console.log(arrays[0], arrays[1]);
# [ 'product1', 'product2', 'product3' ] [ '250', '500', '750' ]

如果需要,您可以将第一个和第二个元素分配给不同的变量,例如

var array_1 = arrays[0], array_2 = arrays[1];

答案 1 :(得分:1)

您可以遍历数组中的每个单元格,并在值上调用split("\t");。然后将返回传递给每个数组。 (假设选项卡是实际的\t而不仅仅是空白量)

答案 2 :(得分:1)

我和@thefoureye写了几乎相同的答案,但我使用的是一个对象来存储结果。

var result = yourArray.reduce(function(acumulator, current) {
    var values = current.split('\t');

    acumulator.products.push(values[0]);
    acumulator.prices.push(values[1]);

    return acumulator;
}, { products: [], prices: [] })

console.log(result.products, result.prices);

另一种方式(可能更简单)

var array1 = [], array2 = [];

yourArray.forEach(function(item) {
    var values = item.split('\t');

    array1.push(values[0]);
    array2.push(values[1]);
});