Javascript 删除数组中字符后的部分字符串并删除重复的元素

Javascript 删除数组中字符后的部分字符串并删除重复的元素,javascript,jquery,Javascript,Jquery,我试图删除数组中“\u1”之后的元素值的一部分,并在完成后删除所有重复的元素 for (i = 0; i < names.length; i++) { names[i] = names[i].substring(names[i].indexOf("_") + 1); } 数组看起来像 names = ["ann_w", "james_q", "ann_q", "peter_p", "steve_q", "james_s"]; 我正试着把它转换成 names = ["ann",

我试图删除数组中“\u1”之后的元素值的一部分,并在完成后删除所有重复的元素

for (i = 0; i < names.length; i++) {
   names[i] = names[i].substring(names[i].indexOf("_") + 1);
}
数组看起来像

names =  ["ann_w", "james_q", "ann_q", "peter_p", "steve_q", "james_s"];
我正试着把它转换成

names = ["ann", "james", "peter", "steve"];
下面的代码返回undefined,无法理解如何删除所有重复的元素

for (i = 0; i < names.length; i++) {
   names[i] = names[i].substring(names[i].indexOf("_") + 1);
}

您可以尝试对字符串使用split而不是子字符串,然后您将得到一个字符串数组,因为您只需要第一个名称,所以您将使用数组[0]


此外,由于尝试对整个数组而不是字符串进行子串,因此会返回错误。您需要执行names[i]=names[i]。substring

您可以尝试对字符串使用split,而不是执行substring,然后您将获得一个字符串数组,并且由于您只需要第一个名称,因此您将使用array[0]

此外,由于尝试对整个数组而不是字符串进行子串,因此会返回错误。您需要执行名称[i]=名称[i]。子字符串使用集合和映射:

var名称=[ann_w,james_q,ann_q,peter_p,steve_q,james_s]; var unique_names=[…new Setnames.mapname=>{ 返回名称。拆分“”[0] }] 控制台。logunique_名称使用集合和映射:

var名称=[ann_w,james_q,ann_q,peter_p,steve_q,james_s]; var unique_names=[…new Setnames.mapname=>{ 返回名称。拆分“”[0] }] console.logunique_name您可以这样做:使用arrayreduce和Object.keys。 reduce将创建一个名为key的对象,然后您可以通过object.keys以数组的形式获取key

var名称=[ann_w,james_q,ann_q,peter_p,steve_q,james_s]; var obj=names.reduceFunction,v{ 变量名称=v.split''[0]; if!r[名称]{ r[名称]=1; } 返回r; }, {}; console.logObject.keysobj 可以这样做:使用arrayreduce和Object.keys。 reduce将创建一个名为key的对象,然后您可以通过object.keys以数组的形式获取key

var名称=[ann_w,james_q,ann_q,peter_p,steve_q,james_s]; var obj=names.reduceFunction,v{ 变量名称=v.split''[0]; if!r[名称]{ r[名称]=1; } 返回r; }, {}; console.logObject.keysobj;
是的,你是对的,我带代码的时候忘了把它放在她身上是的,你是对的,我带代码的时候忘了把它放在她身上&@tl;dr:设置保证唯一性,而。。。将集合变回ArraySyntractic sugar以减少代码:var unique_names=[…new Setnames.mapname=>name.split'[0]];……太长了,读不下去了,你可以总是用这个漂亮的代码来交换这个代码,用“&”,TL;DR:设置保证唯一性,同时…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………[…新设置在safari和IE中崩溃,替代方案是什么?您可以始终使用Works for me:Works for me:
names =  ["ann_w", "james_q", "ann_q", "peter_p", "steve_q", "james_s"];

for (i = 0; i < names.length; i++) {
   names[i] = names[i].substring(0, names[i].indexOf("_"));
}

var unique = names.filter(function(item, i, names) {
    return i == names.indexOf(item);
});

console.log(unique)
var names = ["ann_w", "james_q", "ann_q", "peter_p", "steve_q", "james_s"];

var tmp = names.map(function(n){
   return n.split("_")[0];
}).sort();

// tmp = ["ann", "ann", "james", "james", "peter", "steve"]

var result = [];

tmp.forEach(function(t){
    if(!result.includes(t))
        result.push(t);
});

console.log(result);