如何在数组中获取元素的特定部分

时间:2013-04-21 20:28:47

标签: javascript

标题可能有点令人困惑。但我认为很清楚:

var a = ["A1", "B13", "C123"];

我想忽略元素中的第一个值并获取其余值。所以我的新数组应该是这样的:

var b = ["1", "13", "123"];

4 个答案:

答案 0 :(得分:5)

使用.map()创建一个新的原始修改值数组。

var b = a.map(function(item) {
    return item.slice(1);
});

这将迭代原始Array,将Array中的每个项目作为函数的第一个参数传递,并将函数的返回值设置为新数组的值。

对于IE8及更低版本,您需要实现补丁。一个可用from MDN

答案 1 :(得分:3)

使用.map,您可以返回一个新数组,该数组是通过函数传递现有数组中的每个元素而生成的:

var b = a.map(function(v) {
    return v.substr(1);
});

请注意,.map是ES5函数,在旧版浏览器中不存在。上面的链接提供垫片。

答案 2 :(得分:2)

var b = [];

for (var i = 0; i < a.length; ++i)
{
    b[i] = a[i].substring(1);
}

Live Demo

答案 3 :(得分:1)

forEach方式

var a = ["A1", "B13", "C123"],
    b = [];

a.forEach(function (element) {
    b.push(element.slice(1));
});

console.log(b);

on jsfiddle

map方式

var b = a.map(function (element) {
    return element.slice(1);
});

for方式

var l = a.length;
var b = [];

for (var i = 0; i < l; i += 1) {
    b.push(a[i].slice(1));
}

终极速度仍然是for循环(除了可能是大爸爸)

因此,当我最终将所有上述内容包括在内时,将他们的大爸爸全部排除在外是不对的。

while方式

var b = [];
var i = 0;
var l = a.length;

while (i < l) {
    b.push(a[i].slice(1));
    i += 1;
}

我还提供了一个RegExp和jquery版本,但有点傻笑。

lodash也有自己的地图功能)

您可以看到jsperf