JavaScript/Vue.js根据nameValue匹配两个数组,并删除不匹配的数组项



如何根据nameValue匹配两个数组?

因此,在下面的示例中,删除基于nameValue不匹配的数组项,并保留productPrice:

const allCombinations = ref([]);
const allValuesForProduct = ref([]);
//
allCombinations.value = [
{nameValue: 'blue/m/regular', productPrice: null},
{nameValue: 'red/m/regular', productPrice: null},
{nameValue: 'pink/m/regular', productPrice: null},
]
allValuesForProduct.value = [
{nameValue: 'blue', productPrice: 666},
{nameValue: 'red', productPrice: 666},
{nameValue: 'pink', productPrice: 666},
{nameValue: 'blue/m/regular', productPrice: 99},
{nameValue: 'red/m/regular', productPrice: 99},
{nameValue: 'pink/m/regular', productPrice: 99},
]

最终结果应该是这样的:

const allCombinations = ref([]);
const allValuesForProduct = ref([]);
//
allCombinations.value = [
{nameValue: 'blue/m/regular', productPrice: null},
{nameValue: 'red/m/regular', productPrice: null},
{nameValue: 'pink/m/regular', productPrice: null},
]
allValuesForProduct.value = [
{nameValue: 'blue/m/regular', productPrice: 99},
{nameValue: 'red/m/regular', productPrice: 99},
{nameValue: 'pink/m/regular', productPrice: 99},
]

试试这个:

allCombinations.value = allCombinations.value.filter(comb => {
return allValuesForProduct.value.some(val => {
return val.nameValue === comb.nameValue
})
})

allValuesForProduct.value = allValuesForProduct.value.filter(val => {
return allCombinations.value.some(comb => {
return comb.nameValue === val.nameValue
})  
})

最新更新