簡體   English   中英

查找數組或字符串中的第一個唯一值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM