JAVASCRIPT中的联合连接
我正试图用一些类似于SQL的“合并”函数在Javascript中连接几个数组 以下是我的阵列:JAVASCRIPT中的联合连接,javascript,arrays,join,break,coalesce,Javascript,Arrays,Join,Break,Coalesce,我正试图用一些类似于SQL的“合并”函数在Javascript中连接几个数组 以下是我的阵列: var items = [ {itemid: 'A'}, {itemid: 'B'}, {itemid: 'C'}, {itemid: 'D'}, {itemid: 'E'} ]; var specials = [ {itemid: 'A', price: '5.00'}, {itemid: 'C', price: '5.00'}, {
var items = [
{itemid: 'A'},
{itemid: 'B'},
{itemid: 'C'},
{itemid: 'D'},
{itemid: 'E'}
];
var specials = [
{itemid: 'A', price: '5.00'},
{itemid: 'C', price: '5.00'},
{itemid: 'E', price: '5.00'}
];
var mainprices = [
{itemid: 'A', price: '10.00'},
{itemid: 'B', price: '10.00'},
{itemid: 'C', price: '10.00'},
{itemid: 'D', price: '10.00'},
{itemid: 'E', price: '10.00'}
];
我想要的是:
我的第一列是itemid我的第二个专栏是价格 我希望price列首先从我的“特价””数组中检索价格,然后对于没有值的行,从我的“mainprices”数组中返回价格 以下是我迄今为止所尝试的:
var results = [];
for (var i=0; i<items.length; i++) {
var found = false;
for (var j=0; j<specials.length; j++) {
if (items[i].itemid === specials[j].itemid) {
results.push({
item_id: items[i].itemid,
price_value: specials[j].price
});
found = true;
break;
}
}
if (found === false) {
results.push({
item_id: items[i].itemid,
price_value: null
});
}
}
console.log(results);
我现在想做的是用“mainprices.price”值替换空值
如果有人能帮助我,我将不胜感激
干杯您可以
.map
映射mainPrices
数组,并在特价中搜索匹配的元素
:
var项目=[
{itemid:'A'},
{itemid:'B'},
{itemid:'C'},
{itemid:'D'},
{itemid:'E'}
];
变量特殊值=[
{itemid:'A',price:'5.00'},
{itemid:'C',price:'5.00'},
{itemid:'E',price:'5.00'}
];
var价格=[
{itemid:'A',price:'10.00'},
{itemid:'B',price:'10.00'},
{itemid:'C',price:'10.00'},
{itemid:'D',price:'10.00'},
{itemid:'E',price:'10.00'}
];
const pricesWithSpecials=mainprices.map({itemid,price})=>{
const found=specials.find((e)=>e.itemid==itemid);
返回{itemid,price:found?found.price:price};
});
控制台日志(价格特殊)
您可以通过构建itemid
到price
的字典来实现这一点。要构建字典,请在同一数组中列出价格,最重要的列在最后,以便它们在构建字典时覆盖以前的条目
从本词典中,您可以很容易地获得itemid
的价格,并且您可以通过映射项目来生成输出
您可以将此逻辑封装在一个可重用函数中,该函数可以接受任意数量的price数组。您只需按重要性为这些数组提供数据,最重要的数据在右边
const项=[
{itemid:'A'},
{itemid:'B'},
{itemid:'C'},
{itemid:'D'},
{itemid:'E'}
];
常量特价=[
{itemid:'A',price:'5.00'},
{itemid:'C',price:'5.00'},
{itemid:'E',price:'5.00'}
];
常量价格=[
{itemid:'A',price:'10.00'},
{itemid:'B',price:'10.00'},
{itemid:'C',price:'10.00'},
{itemid:'D',price:'10.00'},
{itemid:'E',price:'10.00'}
];
const superImportantPrices=[
{itemid:'B',price:'15.00'}
];
const coalesce=(项目,…价格)=>{
const pricesDict=prices.flat().reduce((acc,{itemid,price})=>{
acc[itemid]=价格;
返回acc;
}, {});
返回items.map({itemid})=>({itemid,price:pricesDict[itemid]}));
}
//将最重要的价格合并到右边
const result=合并(项目、主要价格、特价、重要价格);
控制台日志(结果)代码>非常感谢您的帮助!我对JavaScript相当陌生。非常感谢你的帮助。祝你有美好的一天!
[{item_id: "A", price_value: "5.00"}, {item_id: "B", price_value: null}, {item_id: "C", price_value: "5.00"}, {item_id: "D", price_value: null}, {item_id: "E", price_value: "5.00"}]