const repeat= (nums) =>{ //* Done
let ans = []
for(let i = 0; i< nums.length; i ){
if(nums[i] === nums[i 1]){
if(ans[ans.length -1] !== nums[i]){
ans.push(nums[i])
}
}
}
return ans.length
}
console.log(repeat(['nsmg33de1','nsmg33de1','2211,','2211','1234','1234']))
在這個例子中,這個函式似乎無法正常作業,陣列中有 3 個重復的字串,但它會輸出 2
uj5u.com熱心網友回復:
[我希望這會對您有所幫助,首先將給定的字串轉換為陣列。要做到這一點,請使用string.split(""). 其次,創建一個將單詞存盤為鍵并計數為值的映射。
現在遍歷 stringArray 并將當前單詞存盤到地圖中。并在每次找到單詞時增加單詞的計數。
檢查以下鏈接][1]
let words = "I am not gonna live forever, but I wanna live while I am alive";
function countRepeatedWords(sentence) {
let words = sentence.split(" ");
let wordMap = {};
for (let i = 0; i < words.length; i ) {
let currentWordCount = wordMap[words[i]];
let count = currentWordCount ? currentWordCount : 0;
wordMap[words[i]] = count 1;
}
return wordMap;
}
console.log(countRepeatedWords(words));
uj5u.com熱心網友回復:
取決于你想要什么價值?如果您想要已發生的重復數量,您可以將您的串列轉換為一個 Set 以洗掉所有重復,然后計算該集合與原始串列之間的大小差異,如下所示:
function repeat(values) {
return values.length - new Set(values).size;
}
否則,如果您想知道有多少專案至少有 1 個重復,那將是一個不同的故事。
為此,您可以將集合轉換為陣列,然后在陣列中多次找到該值的每個值上映射 1,對所有其他值映射 0。之后,您可以通過將所有這些值加在一起來減少此陣列。像這樣:
function repeat(values) {
return [...new Set(values)].map(v => values.filter(o => o == v).length > 1 ? 1 : 0).reduce((a, b) => a b);
}
uj5u.com熱心網友回復:
我把它放在控制臺中。不是世界上最好的演算法,但我認為這就是你想要做的:
const getCountOfDuplicates = (items) => {
const count = {};
items.forEach(item => {
if(count[item] && count[item] > 0) {
count[item] ;
} else {
count[item] = 1;
}
});
return Object.values(count).reduce((acc, value) => {
if(value > 1) {
acc ;
}
return acc;
}, 0);
};
console.log('results 1', getCountOfDuplicates(['1','2','3','4','1','2','3','5', '6', '6', '7'])); // Output: "results 1", 4
console.log('results 2', getCountOfDuplicates(['nsmg33de1','nsmg33de1','2211,','2211','1234','1234'])) // Output: "results 2", 2
uj5u.com熱心網友回復:
你的代碼沒問題。這個陣列有問題 ['nsmg33de1','nsmg33de1','2211,','2211','1234','1234'] 使用 ['nsmg33de1','nsmg33de1','2211','2211',' 1234','1234']
也試試這個原始代碼
const arr = ['nsmg33de1','nsmg33de1','2211','2211','1234','1234']
let obj = {};
arr.forEach(x => {
obj[x] = (obj[x] || 0) 1;
});
console.log(obj);
let valArray =Object.values(obj);
let conunt = 0;
valArray.forEach( c => {
if(c > 1){
conunt = conunt 1;
}
});
console.log(conunt);
uj5u.com熱心網友回復:
你的代碼運行得很好。
洗掉,串列中第 3 項末尾的逗號。
['nsmg33de1','nsmg33de1','2211,','2211','1234','1234']
結果:
['nsmg33de1','nsmg33de1','2211','2211','1234','1234']
const repeat = nums => { //* Done
let ans = []
for (let i = 0; i < nums.length; i ) {
if (nums[i] === nums[i 1]) {
if (ans[ans.length-1] !== nums[i]) {
ans.push(nums[i])
}
}
}
return ans.length
}
console.log(repeat(['nsmg33de1','nsmg33de1','2211','2211','1234','1234'])) // -> 3
如果單詞不按順序使用以下內容:
const getRepeatedWordsCount = list => {
let wordDict = {};
let total = 0;
for (let word of list) {
total = wordDict[word] ? 1 : 0;
wordDict[word] = 1;
}
return total;
}
console.log(getRepeatedWordsCount(['nsmg33de1','2211','1234','nsmg33de1','1234', '2211'])) // -> 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390384.html
標籤:javascript html css 数组 重复
