【发布时间】:2020-10-20 00:18:48
【问题描述】:
我试图通过将两个对象数组与字段进行比较来列出所有不匹配的值。
到目前为止,此代码在数据量较少的情况下运行良好。但是当我传递大量数据时,这意味着这段代码会消耗更多时间。那么,有没有办法简化这个 for 循环。
目前我的输出喜欢
[ 'product1', 'product2' ]
[ 41 ]
但是,我期待像
product_name: [ 'product1', 'product2' ]
product_quantity: [ 41 ]
var newProductArray = [
{
"product_item_number" : 12345,
"product_name" : "product1",
"product_quantity" : 7,
"product_cost" : 12
},
{
"product_item_number" : 8888,
"product_name" : "product2",
"product_quantity" : 5,
"product_cost" : 56
},
{
"product_item_number" : 1111,
"product_name" : "product3",
"product_quantity" : 3,
"product_cost" : 73
},
{
"product_item_number" : 5555,
"product_name" : "product5",
"product_quantity" : 41,
"product_cost" : 90
},
]
var oldProductArray = [
{
"product_item_number" : 12345,
"product_name" : "product 123",
"product_quantity" : 7,
"product_cost" : 12
},
{
"product_item_number" : 8888,
"product_name" : "product2 sample",
"product_quantity" : 5,
"product_cost" : 56
},
{
"product_item_number" : 789,
"product_name" : "product3",
"product_quantity" : 3,
"product_cost" : 73
},
{
"product_item_number" : 5555,
"product_name" : "product5",
"product_quantity" : 0,
"product_cost" : 90
},
]
function compareData(){
let productNames = []
let productsCost = []
for (var i = 0; i < newProductArray.length; i++) {
for (var j = 0; j < oldProductArray.length; j++) {
if (newProductArray[i].product_item_number === oldProductArray[j].product_item_number) {
if(newProductArray[i].product_name != oldProductArray[i].product_name){
productNames.push(newProductArray[i].product_name)
}
if(newProductArray[i].product_quantity != oldProductArray[i].product_quantity){
productsCost.push(newProductArray[i].product_quantity)
}
}
}
}
console.log(productNames)
console.log(productsCost)
}
compareData()
【问题讨论】:
-
最好的方法是使用 JavaScript 标准函数集来处理数组。我不知道您对 SQL 或 LINQ 有多熟悉,但您可以使用 JavaScript 中的类似函数,这些函数更易于使用和理解(一旦掌握了它们)。我会看看函数 map、filter 和 reduce,以及一些新的 ES6 运算符,它们可以帮助执行数组类型的函数,例如扩展运算符。
-
这个结果对您有什么用处?我的意思是当你有这个带有 [41] 的数组时,你不知道这个数量是指哪个产品......并且预期的输出不是有效的 JavaScript 表示法(它缺少大括号)。您还问了两个完全不同的问题:(1)代码运行良好,但我怎样才能加快速度? (2) 代码运行不正常,如何修复错误的输出格式?你应该限制在一个问题上。
标签: javascript node.js arrays