为了账号安全,请及时绑定邮箱和手机立即绑定

比较两个数组中的值并生成一个新数组

比较两个数组中的值并生成一个新数组

aluckdog 2023-08-18 16:52:49
我有两个数组,它们可能有也可能没有相似的值const arrayOne = [orange, red, black, blue, yellow]const arrayTwo = [blue, purple, white, red]我正在使用react,useEffect我希望在通过它进行某些更改时onClick返回不相同的值例子:-const = [orange, purple, black, white, yellow]我已经尝试过以下...const [newArray, setNewArray] = useState([])const [reload, setReload] = useState(false)  useEffect(() => {    const results = arrayOne.filter((i) => {      return (        i.id != arrayTwo.id      )      setNewArray(results)    })  }, [reload])  return (    <button onClick={() => setReload(!reload) }>      Trigger useEffect    </button>  )
查看完整描述

4 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

找到相似的项目,然后进行相应的过滤:


const arrayOne = ['orange', 'red', 'black', 'blue', 'yellow']

const arrayTwo = ['blue', 'purple', 'white', 'red']


// [red,blue]

const dupItems = arrayOne.filter(item => arrayTwo.includes(item));


const output = [...arrayOne.filter(item => !dupItems.includes(item)), ...arrayTwo.filter(item => !dupItems.includes(item))];

console.log(output);


查看完整回答
反对 回复 2023-08-18
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

也许这样的事情可以工作


const diffArray = arrayOne.reduce((acc, value) => {

  if ((arrayTwo.inclues(value) { return acc; }

  return acc.concat([value]);

}, []);

注意:请检查我的代码中是否有拼写错误,我是通过手机接听的


查看完整回答
反对 回复 2023-08-18
?
Qyouu

TA贡献1786条经验 获得超11个赞

尝试这个


function diff (a1, a2) {


    var a = [], diff = [];


    for (var i = 0; i < a1.length; i++) {

        a[a1[i]] = true;

    }


    for (var i = 0; i < a2.length; i++) {

        if (a[a2[i]]) {

            delete a[a2[i]];

        } else {

            a[a2[i]] = true;

        }

    }


    for (var k in a) {

        diff.push(k);

    }


    return diff;

}


// call here 

diff( ['a', 'b'], ['a', 'b', 'c', 'd'] );


查看完整回答
反对 回复 2023-08-18
?
隔江千里

TA贡献1906条经验 获得超10个赞

一种解决方案是这样做:


let arrayOne=['orange', 'red', 'black', 'blue', 'yellow'];


let arrayTwo=['blue', 'purple', 'white', 'red'];


let common=arrayOne.filter(value => arrayTwo.includes(value))


let result=[...new Set([...arrayOne,...arrayTwo])].filter(value=>common.indexOf(value)==-1)


console.log(result)


查看完整回答
反对 回复 2023-08-18
  • 4 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信