Javascript JS比较两个数组并从第二个数组中删除唯一值
我正在制作Knockout.jsJavascript JS比较两个数组并从第二个数组中删除唯一值,javascript,jquery,arrays,knockout.js,Javascript,Jquery,Arrays,Knockout.js,我正在制作Knockout.js var chosenFruit = ko.observableArray([]); var allFruits = ko.observableArray([]); allFruits = [ "Apple" , "Bananna" , "Grapes" , "Oranges"] chosenFruit = ["Apple" , "Bananna" , "kiwi"] 现在,由于“猕猴桃”不在第一个数组中(也就是
var chosenFruit = ko.observableArray([]);
var allFruits = ko.observableArray([]);
allFruits = [ "Apple" , "Bananna" , "Grapes" , "Oranges"]
chosenFruit = ["Apple" , "Bananna" , "kiwi"]
现在,由于“猕猴桃”不在第一个数组中(也就是说,在allFruits中),我想从第二个数组(chosenFruit)中删除“猕猴桃”
我想比较两个数组并从第二个数组中删除第一个数组中不存在的值
这意味着,比较后,第二个数组应为:
chosenFruit = ["Apple" , "Bananna"]
请建议如何实现这一目标
提前谢谢你 使用方法
var allFruits=[“苹果”、“班纳纳”、“葡萄”、“橙子”],
乔森水果=[“苹果”、“班纳纳”、“猕猴桃”];
console.log(
//迭代并过滤掉元素
chosenFruit.过滤器(功能(v){
//检查数组中是否存在值
返回所有水果。指数(v)>-1;
})
)
您可以通过查找和删除不应在chosenFruits
数组中的项来执行以下操作
allFruits=[“苹果”、“班纳纳”、“葡萄”、“橙子”],
乔森水果=[“苹果”、“班纳纳”、“猕猴桃”、“甜瓜”、“蟑螂”];
丢弃=chosenFruit.reduceRight((p,c,i,a)=>!allFruits.includes(c)?p.concat(a.splice(i,1)):p,[]);
控制台日志(chosenFruit);
console.log(丢弃)代码>
console.log($([“Apple”、“Bananna”、“kiwi”)).filter([“Apple”、“Bananna”、“Grapes”、“Oranges”).get()代码>
请写出您尝试过的内容。您没有从chosenFruit
数组中删除任何内容。@Redu:只需指定返回值就可以了chosenFruit=chosenFruit.filter(函数(v){return allFruits.indexOf(v)>-1;})
。。。。。但是它会破坏引用,我认为引用在这里是不必要的,它不会起作用。如果您这样做,任何引用chosenFruit
的数组仍将显示[“Apple”、“Bananna”、“kiwi]。由于赋值运算符(=
)的原因,这些引用将丢失。@user2598808:有错误吗?您需要分配返回值chosenFruit=chosenFruit.filter(函数(v){returnallfruits.indexOf(v)>-1;})
@PranavCBalan非常感谢!如果这是一个愚蠢的问题,我很抱歉,但是这个符号“=>”是什么?我试图用KnockOut.JS在JS文件中实现这一点。@user2598808 ES6 arrowfunction@user2598808这是一个叫做箭头函数的函数定义。我将在常规函数定义中给出上述代码段的修改版本。@Redu非常感谢您的回复。请建议我们可以使用JavaScript文件中的箭头。@user2598808如果您的目标环境符合JS的ES6标准,您可以安全地使用箭头。谢谢@Laurianti,我需要使用KnockOut.JS