1

标题可能有点混乱。但我认为很清楚:

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

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

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

4 回答 4

5

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

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

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

对于 IE8 及更低版本,您需要实施补丁。一个可从 MDN获得。

于 2013-04-21T20:30:27.350 回答
3

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

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

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

于 2013-04-21T20:30:35.053 回答
2
var b = [];

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

现场演示

于 2013-04-21T20:30:35.813 回答
1

forEach方式_

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

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

console.log(b);

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

于 2013-04-21T20:32:00.230 回答