久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

javascript – 獲取第2,第3個陣列上沒有的項目 – JS

 印度阿三17 2019-08-23

我正在嘗試創(chuàng)建一個函數(shù),它將獲取在第二個或第三個上無法看到的項目以及在函數(shù)內(nèi)傳遞的即將到來的數(shù)組.

現(xiàn)在我的函數(shù)只獲得類似的項目.我怎樣才能使它得到差異(w / c是第二個和第三個以及前進陣列不存在的項目.

const callM = function(arrays) {
   arrays = Array.prototype.slice.call(arguments);


   let result = [];

  for(let i = 1; i < arrays.length; i  ){
    for(let x = 0; x < arrays[i].length; x  ){
      if(arrays[0].includes(arrays[i][x])){
        result.push(arrays[i][x]);
      }
    }
  }

  return result;

  };

console.log(callM([1, 2, 3, 4, 5], [5, 2, 10])); // -> must be [1, 3, 4]
console.log(callM([1, 2, 3, 4, 5], [5, 2, 10], [7, 1, 8])); // -> must be [3,4]

現(xiàn)在的邏輯有點偏,因為它恰恰相反.我該如何解決,?

還有一種方法可以使用高階函數(shù)(如reduce或filter)來完成此操作嗎,?

謝謝!

解決方法:

我會以不同的方式思考這個問題.作為兩組之間的差異:數(shù)組0和數(shù)組1 … n

要獲得數(shù)組0,只需將其從頂部移開即可

const arr0 = arrays.shift()

參考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

這將從數(shù)組中刪除第一個數(shù)組
接下來我們合并剩下的數(shù)組

const arrN = arrays.reduce(function(prev, curr) {
  return prev.concat(curr)
})

參考:http://www./en/javascript/flattening-multidimensional-arrays-in-javascript/

不需要的,由@Phil提到的包括處理

下一個過濾器通過與自身進行比較從arrN復制

const unique = arrN.filter(function(elem, index, self) {
    return index == self.indexOf(elem);
})

參考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

下一個過濾器包括找到差異(或聯(lián)合)

const diff = arr0.filter(function(item) {
    return !arrN.includes(item))
}

完整片段:

function callM(arrays) {

  const arr0 = arrays.shift()
  const arrN = arrays.reduce(function(prev, curr) {
    return prev.concat(curr)
  })
  //const unique = arrN.filter(function(elem, index, self) {
  //    return index == self.indexOf(elem)
  //})
  return arr0.filter(function(item) {
    return !arrN.includes(item)
  })
}

console.log(callM([[1, 2, 3, 4, 5], [5, 2, 10]]))
console.log(callM([[1, 2, 3, 4, 5], [5, 2, 10], [7, 1, 8]]))

當然ES6會更容易. ??

const callM = (first, ...rest) => {
  const arrays = [].concat(...rest)
  return first.filter(item => !arrays.includes(item))
}

console.log(callM([1, 2, 3, 4, 5], [5, 2, 10]))
console.log(callM([1, 2, 3, 4, 5], [5, 2, 10], [7, 1, 8]))
來源:https://www./content-1-402751.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多