soword科技言
永久公益免费API接口
提供永久免费的API接口,查看更多API接口,如果您有其他免费API资源,请联系我们,造福人类。
提供商务开发:小程序,系统,APP
定制开发,免费评估,免费咨询,价格便宜,售后保障,前往开发服务中心联系开发客服中心
比较两个不同的数组并将匹配的记录保存到Java Script中的另一个数组中

我需要比较两个数组,当记录匹配时,再将记录的记录保存到另一个数组中

Array 1[ { "phId": 10, "value": "[PACKNAME]" }, { "phId": 11, "value": "[PACKTYPE]" }, { "phId": 12, "value": "[BALANCE]" }, { "phId": 17, "value": "[DURATION]" } ] Array 2[ "[PACKNAME]", "[BALANCE]" ]Matched Record Saved Array[ { "phId": 10, "value": "[PACKNAME]" }, { "phId": 12, "value": "[BALANCE]" } ]

如何使用javascript实现此方法。

我可以使用下面的代码进行匹配并将数组保存为相同类型的数组,但是我无法执行上述方案。

let firstArray = ["One", "Two", "Three", "Four", "Five"];let secondArray = ["Three", "Four"];let map = {};firstArray.forEach(i => map[i] = false);secondArray.forEach(i => map[i] === false && (map[i] = true));let jsonArray = Object.keys(map).map(k => ({ name: k, matched: map[k] }))

这是一个简单的用filter例:

let array1 = [ { "phId": 10, "value": "[PACKNAME]" }, { "phId": 11, "value": "[PACKTYPE]" }, { "phId": 12, "value": "[BALANCE]" }, { "phId": 17, "value": "[DURATION]" } ];let array2 = [ "[PACKNAME]", "[BALANCE]" ];let array3 = array1.filter((el) => array2.includes(el.value));console.log(array3);

用 filter

const arr_one = [ { "phId": 10, "value": "[PACKNAME]" }, { "phId": 11, "value": "[PACKTYPE]" }, { "phId": 12, "value": "[BALANCE]" }, { "phId": 17, "value": "[DURATION]" } ] const arr_two = [ "[PACKNAME]", "[BALANCE]" ]const matched = arr_one.filter( ( item ) => arr_two.includes( item.value ))console.log(matched)/* Matched Record Saved Array [ { "phId": 10, "value": "[PACKNAME]" }, { "phId": 12, "value": "[BALANCE]" } ] */

如果我正确理解了您要执行的操作:您可以仅对第一个数组中value存在于第二个数组中的元素进行过滤,如下所示:

const firstArray = [
{ "phId": 10, "value": "[PACKNAME]" },
{ "phId": 11, "value": "[PACKTYPE]" },
{ "phId": 12, "value": "[BALANCE]" },
{ "phId": 17, "value": "[DURATION]" }] const secondArray = [ "[PACKNAME]", "[BALANCE]" ]const matchedArray = firstArray.filter(({ value }) => secondArray.includes(value))

您不想要所有物品=您不想要map
您需要一些符合条件的物品=您想要filter

试试这个:

array1.filter(item=>array2.includes(item.value))
array1=[ { "phId": 10, "value": "[PACKNAME]" }, { "phId": 11, "value": "[PACKTYPE]" }, { "phId": 12, "value": "[BALANCE]" }, { "phId": 17, "value": "[DURATION]" } ] array2=[ "[PACKNAME]", "[BALANCE]" ]res = array1.filter(o => array2.includes(o.value))console.log(res)



2023-03-22 10:04:19

新人小程序+APP定制199元起


发放福利,助力中小企业发展,真正在互联网中受益

点击询问定制

广告服务展示