我有一个数组,它在另一个函数中收集了一系列单词。我的意图是计算和分离那些唯一的词,如果重复这些词,则不要计算它们。我走了这么远,但是代码停留在第一位。目的是计算数组中的唯一单词。
let arrayTemp = [];
Array1.forEach((item) => {
if(arrayTemp[0]){
arrayTemp[0] = item.perfilRoot;
}
for(let i = 0; i < arrayTemp.length; i++){
if(item.perfilRoot != arrayTemp[i]){
arrayTemp.push(item.perfilRoot);
}else{
break;
}
}
});
答案 0 :(得分:2)
您可以尝试使用Set,该对象可以存储唯一值。
const valuesYouWant = Array1.map(item => item.perfilRoot); // new array with values you want from Array1
const uniqueValues = [...new Set(valuesYouWant)]; // new array with unique values from array valuesYouWant
console.log(uniqueValues); // this will log your unique values
console.log(uniqueValues.length); // this will log the length of the new created array holding the unique values
答案 1 :(得分:2)
转换为win32com
并选中Set
size
答案 2 :(得分:0)
您可以考虑使用Set。
array = [1,1,2,3,4,4,5];
unique = [...new Set(array)];
console.log (unique.length);
答案 3 :(得分:0)
您可以使用Sets:
let arr = [1, 2, 3, 2, 3, 1]
console.log(new Set(arr).size)
或者您可以使用类似地图的对象来计算唯一键:
let arr = ['dog', 'dog', 'cat', 'squirrel', 'hawk', 'what a good dog'];
let m = {};
// count uniques words in array
arr.forEach(word => m[word] = 1);
// prints uniques counters
console.log('count:', Object.keys(m).length)
答案 4 :(得分:0)
由于您只想计算唯一词,因此Set
将不起作用。下面的代码查看该数组,并且仅当该单词在Array1
中仅被发现一次时,它才会将其添加到arrayTemp
let arrayTemp = [];
Array1.map(a=>a.perfilRoot).forEach((item, index) => {
if (index +1 < Array1.length && Array1.slice(index +1).indexOf(item) === -1) arrayTemp.push(item);
});
console.log(arrayTemp);
console.log('number of unique words', arrayTemp.length);