用连字符分隔匹配值

时间:2016-04-24 11:08:44

标签: javascript jquery json

代码:

var finArr = [];
data.forEach(function (line) {
    if (line.toString().indexOf(text) !== -1){
       finArr= finArr.concat(line);
       //console.log( finArr)
    }
})

控制台:

[
"59191", "TypeAV - Canada", "Available", 
"422129", "TypeAA - Italy", "Available", 
"959191", "TypeBB - USA", "N/A", 
"6D968C", "TypeAV - Canada", "Available"
]

我的问题是,如何在每个秒值中删除连字符(-)后的部分?

预期结果是

[
"59191", "TypeAV", "Available", 
"422129", "TypeAA", "Available", 
"959191", "TypeBB", "N/A", 
"6D968C", "TypeAV", "Available"
]

6 个答案:

答案 0 :(得分:1)

试试这个

var data = [["59191","TypeAV - Canada","Available"],["422129","TypeAA - Canada","Available"]], result = [];

data.forEach(function(a) {
  a.map(function(b) {
    b.includes('-') ? result.push(b.split(' - ')[0]) : result.push(b);
  });
});

console.log(result);

答案 1 :(得分:1)

您应该使用line[1]中的line[1] = line[1].split('-')[0]更改forEach的值,如下所示。

var data = [["59191", "TypeAV - Canada", "Available"], ["422129", "TypeAA - Canada", "Available"]];
var finArr = [];
data.forEach(function (line) {
    if (line.toString().indexOf('-') !== -1) {
        line[1] = line[1].split('-')[0].trim();
        finArr = finArr.concat(line);
    }
})
console.log(finArr)

答案 2 :(得分:1)

最好的办法是map覆盖嵌套数组,只返回分割的第一个元素。 - '。

var finArr = [];
data.forEach(function (line) {
  finArr = finArr.concat(line.map(function (el) {
    return el.split(' - ')[0];
  }));
});

DEMO

您也可以将forEach替换为reduce

var finArr = data.reduce(function (p, c) {
  return p.concat(c.map(function (el) {
    return el.split(' - ')[0];
  }));
}, []);

DEMO

答案 3 :(得分:0)

使用split()功能并占据上半部分。

element.split(" - ")[0];

实施例

"One thing - two things".split[" - "][0]; // "One thing"

答案 4 :(得分:0)

如果你有一个数组,你可以迭代并将结果更改为拆分的第一个元素。

var array = [["59191", "TypeAV - Canada", "Available"], ["422129", "TypeAA - Italy", "Available"], ["959191", "TypeBB - USA", "N/A"], ["6D968C", "TypeAV - Canada", "Available"]];
array = array.reduce(function (r, a) {
    a.forEach(function (b) {
        r.push(b.split(' - ')[0]);
    });
    return r;
}, []);

document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');

答案 5 :(得分:0)

另一种方法是使用正则表达式执行此任务

看到你的JSON数据似乎只有第二个值会有一个连字符。因此,使用正则表达式,您可以删除下面的字符串- xyz

data = JSON.parse( JSON.stringify(data).replace(/-\w+/g,""));

现在您已删除了不需要的文本,请使用现有的循环逻辑,然后您必须获得所需的输出。