标题可能有点令人困惑。但我认为很清楚:
var a = ["A1", "B13", "C123"];
我想忽略元素中的第一个值并获取其余值。所以我的新数组应该是这样的:
var b = ["1", "13", "123"];
答案 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);
}
答案 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