我试图在'_'之后删除数组中元素的部分值,并在完成后删除所有重复的元素。
数组看起来像
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);
}
答案 0 :(得分:4)
使用Set&amp;图:
var names = ["ann_w", "james_q", "ann_q", "peter_p", "steve_q", "james_s"];
var unique_names = [ ...new Set(names.map(name => {
return name.split('_')[0]
}))]
console.log(unique_names)
答案 1 :(得分:2)
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);
答案 2 :(得分:0)
您可以尝试在字符串上使用split而不是使用子字符串,然后您将获得一个字符串数组,并且因为您只需要第一个名称,所以您需要使用数组[0]。
此外,您正在收回错误,因为您尝试将整个数组子串而不是字符串。你需要做名字[i] = names [i] .substring
答案 3 :(得分:0)
您可以执行此操作:使用array#reduce
和Object.keys
。
reduce
将创建一个名称为键的对象,然后您可以通过Object.keys()
将该键作为数组获取。
var names = ["ann_w", "james_q", "ann_q", "peter_p", "steve_q", "james_s"];
var obj = names.reduce(function(r,v) {
var name = v.split('_')[0];
if(!r[name]) {
r[name] = 1;
}
return r;
}, {});
console.log(Object.keys(obj));
答案 4 :(得分:0)
var names = ["ann_w", "james_q", "ann_q", "peter_p", "steve_q", "james_s"];
var finalArray = [];
for (var i = 0; i <names.length; i++){
var substringArray = names[i].split("_");
if(finalArray.indexOf(substringArray[0]) == -1) finalArray.push(substringArray[0]);
}
答案 5 :(得分:0)
df1.combine_first(df2)
Out:
A B C D E F
0 A0 B0 C0 D0 NaN NaN
1 A1 B1 C1 D1 NaN NaN
2 A2 B2 C2 D2 E2 F2
3 NaN NaN NaN NaN E3 F3
4 NaN NaN NaN NaN E4 F4