[英]Typescript: How can I create a function to compare these two nested arrays?
我正在尝试比较这两个嵌套的 arrays 以确保它们是否相同但我无法弄清楚,我试图开始但无法完成。
我需要确保它们在selected_ingredients
数组中具有相同的food_names
和相同的成分。
任何帮助,将不胜感激。
interface DataInterface {
food_name: string,
selected_ingredients: Array<string>
}
const orderFood: Array<DataInterface> = [
{selected_ingredients: ["Tomatoes", "Lettuce", "Cheese"], food_name: "Single Burger"},
{selected_ingredients: [], food_name: "Fountain Drink"}
];
const orderFood2: Array<DataInterface> = [
{food_name: "Single Burger", selected_ingredients: ["Tomatoes", "Lettuce", "Cheese"]},
{food_name: "Fountain Drink", selected_ingredients: []}
]
function isSame() {
for(let i = 0; i < orderFood.length; i++) {
}
return false;
}
您可以使用具有_.isEqual
方法的 lodash。 这对对象执行深度相等。 这也适用于 arrays 。 唯一的问题是 isEqual 不会检查的排序顺序。
https://lodash.com/docs/4.17.15#differenceWith
下面有一些使用 isEqual 的示例。 我将由您决定是否应该在比较之前进行排序。 您需要进行深度排序,对selected_ingredients
以及orderFood
数组的值进行排序,以通过深度比较获得相关含义。
const a = {food_name: "Single Burger", selected_ingredients: ["Tomatoes", "Lettuce", "Cheese"]} const b = {food_name: "Fountain Drink", selected_ingredients: []} const c = {food_name: "Fountain Drink", selected_ingredients: []} console.log('compare different objects:', _.isEqual(a, b)) console.log('compare same objects:', _.isEqual(b, c)) const orderFood = [ {selected_ingredients: ["Tomatoes", "Lettuce", "Cheese"], food_name: "Single Burger"}, {selected_ingredients: [], food_name: "Fountain Drink"} ] const orderFood2 = [ { food_name: "Single Burger", selected_ingredients: ["Tomatoes", "Lettuce", "Cheese"] }, {food_name: "Fountain Drink", selected_ingredients: []} ] console.log('compare same array of object:', _.isEqual(orderFood, orderFood2)) const orderFood3 = [ {food_name: "Fountain Drink", selected_ingredients: []}, {food_name: "Single Burger", selected_ingredients: ["Tomatoes", "Lettuce", "Cheese"] } ] console.log('compare same array of object with different order:', _.isEqual(orderFood2, orderFood3))
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.20/lodash.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.