Javascript 如何在嵌套数组中移动元素
我想移动嵌套数组中的元素。这是我的数据:Javascript 如何在嵌套数组中移动元素,javascript,arrays,Javascript,Arrays,我想移动嵌套数组中的元素。这是我的数据: let products = [ { "product_name": "A", "_id": "5ace995c14a759325776aab1", "transactions": [ { "_id": "5ad3a274ac827c165a510f99", "qty": 100, "price": 2000
let products = [
{
"product_name": "A",
"_id": "5ace995c14a759325776aab1",
"transactions": [
{
"_id": "5ad3a274ac827c165a510f99",
"qty": 100,
"price": 2000
},
{
"_id": "5ad3a274ac827c165a510f99",
"qty": 80,
"price": 1500
},
]
},
{
"product_name": "B",
"_id": "5ace995914a759325776aab0",
"transactions": [
{
"_id": "5ad3a274ac827c165a510f9b",
"qty": 80,
"price": 1500
}
],
}
]
我期望的结果是:
[
{
"_id": "5ad3a274ac827c165a510f99",
"qty": 100,
"price": 2000,
"product_name": "A",
},
{
"_id": "5ad3a274ac827c165a510f99",
"qty": 80,
"price": 1500,
"product_name": "A",
},
{
"_id": "5ad3a274ac827c165a510f9b",
"qty": 80,
"price": 1500,
"product_name": "B",
}
]
然后,我的求解代码:
function move() {
var result = []
for (product of products) {
for (transaction of product.transactions) {
transaction.product_name = product.product_name
result.push(transaction)
}
}
return result
}
product = move()
是否有任何有效的方法来创建输出,可能是使用数组映射或其他方法?谢谢。您可以使用添加
产品名称的来简化事务处理
也用于:
- 对于属性和
- 用于将变量作为属性,名称作为键
var products=[{产品名称:“A”,交易编号:“5ACE995C14A759325776AB1”,交易编号:[产品编号:“5ad3a274ac827c165a510f99”,数量:100,价格:2000},{产品编号:“5ad3a274ac827c165a510f99”,数量:80,价格:1500},{产品名称:“B”,交易编号:“5ACE995914A759325776AB0”,交易编号:“5AD3A274AC827C165F80,价格:},
结果=产品.reduce((r,{transactions,product_name})=>
r、 concat(transactions.map(t=>Object.assign({},t,{product_name})),
[]
);
控制台日志(结果)代码>
。作为控制台包装{max height:100%!important;top:0;}
只需使用js方法,您就可以获得所需的输出
const产品=[
{
“产品名称”:“A”,
“_id”:“5ACE995C14A759325776AB1”,
“交易”:[
{
“_id”:“5ad3a274ac827c165a510f99”,
“数量”:100,
“价格”:2000年
},
{
“_id”:“5ad3a274ac827c165a510f99”,
“数量”:80,
“价格”:1500美元
},
]
},
{
“产品名称”:“B”,
“_id”:“5ACE995914A759325776AB0”,
“交易”:[
{
“_id”:“5ad3a274ac827c165a510f9b”,
“数量”:80,
“价格”:1500美元
}
],
}
]
让输出=[];
products.forEach(elm=>elm.transactions.forEach(transaction=>{
transaction.product\u name=elm.product\u name;
output.push(事务)});
控制台日志(输出);
您可以减少
和映射
交易以添加产品名称
let result = products.reduce((c,v)=>{ //Loop the array using reduce
let transactions = v.transactions.map(o=>{ //Loop thru each transactions using map
return Object.assign(o,{"product_name":v.product_name}); //Clone the transaction and add the property product_name
});
return c.concat(transactions); //Merge the current array and the transactions
},[]);
以下是一个片段:
//您的数组
让产品=[{“产品名称”:“A”,“交易编号”:“5ACE995C14A759325776AB1”,“交易编号”:[{“产品编号”:“5ad3a274ac827c165a510f99”,“数量”:100,“价格”:2000},{“交易编号”:“5ad3a274ac827c165a510f99”,“数量”:80,“价格”:1500},},{“产品名称”:“B”,“交易编号”:“5ACE995914A759725776AB0”,“交易编号”:“5AD3AU
//简本
让result=products.reduce((c,v)=>c.concat(v.transactions.map(o=>Object.assign(o,{“product_name”:v.product_name})),[];
控制台日志(结果)代码>