将数组中的字符串拆分为更多数组
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;
}
我有这个数组:
["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;
}