将数组中的字符串拆分为更多数组

Split strings in arrays to more arrays

我有这个数组:

["Name: Bob, LastName: Smith, Age: 77","Name: John, LastName: Cabbage, Age: 34","Name: Regan, LastName: Gobsmolly, Age: 80"]

如何将数组中的所有字符串从逗号开始分割成更多的数组,这样结果会像这样:

[["Name: Bob", "LastName: Smith", "Age: 77"],["Name: John", "LastName: Cabbage", "Age: 34"],["Name: Regan", "LastName: Gobsmolly", "Age: 80"]]

我已经尝试用循环拆分数组中的项目,目的是从每个数组返回 Name 值:

function getEntryNames(nameSplit) {
        var nameSplit;
        for (var i = 0; i < nameSplit.length; i++) {
            return nameSplit[i].split(',')[i];
        }
    }
document.write(getEntryNames(theArray))

问题是,该函数只会拆分数组中的第一项,所以我得到了这个结果:

Name: Bob

当我真的想要这个结果时:

Name: Bob, Name: John, Name: Regan

那么如何将数组中的项拆分为更多数组?

您可以使用 Array.prototype.map:

对数组的每个项目简单地执行 split()

var arr = ["Name: Bob, LastName: Smith, Age: 77","Name: John, LastName: Cabbage, Age: 34","Name: Regan, LastName: Gobsmolly, Age: 80"];

arr = arr.map(function(x) { 
    return x.split(',').map(function(x) { return x.trim(); });
});

document.body.innerHTML = JSON.stringify(arr); // just an output

String.prototype.trim 只是应该删除前导和尾随空格。

假设你的数组名是arr:

arr.map(function (e) { return e.split(", "); })

我在nodejs控制台测试了这段代码,结果是:

> var arr = ["Name: Bob, LastName: Smith, Age: 77","Name: John, LastName: Cabbage, Age: 34","Name: Regan, LastName: Gobsmolly, Age: 80"]
undefined
> arr.map(function (e) { return e.split(", "); })
[ [ 'Name: Bob', 'LastName: Smith', 'Age: 77' ],
  [ 'Name: John', 'LastName: Cabbage', 'Age: 34' ],
  [ 'Name: Regan', 'LastName: Gobsmolly', 'Age: 80' ] ]

Array.map 可以轻松做到这一点:

arr.map(function(str) {
    return str.split(',');
});

您可能需要 trim 一些字符串才能获得好的结果:

arr.map(function(str) {
    return str.split(',').map(function(val) {
        return val.trim();
    });
});

这个怎么样: (过程中会替换原数组内容)

var arr = ["Name: Bob, LastName: Smith, Age: 77","Name: John, LastName: Cabbage, Age: 34","Name: Regan, LastName: Gobsmolly, Age: 80"];

function splitSomething(arr) {
  var item;
  for (var i = 0; i < arr.length; i++)
    {
      item = arr[i];
      arr[i] = item.split(',');
    }
  return arr;
}
console.log(splitSomething(arr));

应该是这样的。因为你把 return 所以函数放在第一个元素之后。

function getData(data) {
  for (var i = 0; i < data.length; i++) {
    var value = data[i];
    var item = {};
    var array = value.split(",");
    for (var j = 0; j < array.length; j++) {
      var element = array[j].split(":");
      var key = element[0].trim();
      var value = element[1].trim();
      item[key] = value;
    }
    result.push(item);
  }
  return result;
}