[英]Find the first unique value in an array or string
如何在數組或字符串中獲得一個唯一值? 只有第一個值。 僅限純 JS。
我的例子:
function searchValue () {
let inputText = [1,1,4,2,2,2,3,1];
let foundedValue;
for (let i = 0; i < inputText.length; i++) {
if (i === inputText.indexOf(inputText[i]) && i === inputText.lastIndexOf(inputText[i])) {
foundedValue = inputText[i];
break;
} else {
foundedValue = "not founded.";
}
}
return foundedValue;
}
console.log("Search value: "+ searchValue())
答案是4。
但是,我需要一個簡短的解決方案。 使用find()
和filter()
函數。
你可以試試這個。
const arr = [1, 1, 4, 2, 2, 2, 3, 1]; let r = {}; arr.map(a => r[a] = (r[a] || 0) +1) var res = arr.find(a => r[a] === 1 ) console.log(res)
您可以使用find()
並比較indexOf()
和lastIndexOf()
來find()
數組中的第一個唯一項,以確定數組中是否存在多個項的實例。 如果需要在字符串中查找唯一字符,則可以先將其拆分為數組,然后使用相同的方法。
const arr = [1, 1, 4, 2, 2, 2, 3, 1]; let result = arr.find(x => arr.indexOf(x) === arr.lastIndexOf(x)); console.log(result); // 4 const text = 'aadbbbca'; let textarr = text.split(''); let textresult = textarr.find(x => textarr.indexOf(x) === textarr.lastIndexOf(x)); console.log(textresult); // d
您可以使用 js Set() 對象。 首先,您可以創建一組重復元素。
const inputText = [1,1,4,2,2,2,3,1];
const duplicatesSet= inputText.reduce((dupSet, el) =>
inputText.filter(arrEl => arrEl === el).length > 1 ?
dupSet.add(el) : dupSet
, new Set());
其次,您可以使用array.find
。 它返回第一個重復的元素。
const firstDupElement = inputText.find(el => duplicatesSet.has(el));
function searchValue (_param) {
let foundedValue = "not founded.";
[..._param].some((_val, index) => {
if (index === _param.lastIndexOf(_val)) return foundedValue = _val;
})
return foundedValue;
}
let arr = [1,1,2,2,2,1,3,1,4,4,5] const dupelearray = (array) => { let arr2 =[...arr] let ele = [] let state = false arr2.map((i,index)=>{ arr2.splice(index,1) arr.map((j)=>{ return arr2.includes(j)? null: state=true }) state && ele.push(i) state=false arr2.splice(index,0,i) }) return console.log(arr.indexOf(ele[0])) } dupelearray(arr)
哇,我不知道 lastindexof 方法,並且讓這個算法變得如此困難,順便說一句,這個解決方案也有效,但我絕對是算法的新手,所以這需要更多時間,但解決方案仍然有效!!!!!! 該死的應該記住更多的方法,否則你必須想那么多-_-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.