将嵌套的对象数组与父对象合并
merge nested array of object with parent object
var data = {
food:"chicken",
list:[
{ name: "wings", qty: "25", price: "4,900", payment:"Cash" },
{ name: "lap", qty: "50", price: "9,900", payment: "Credit" }
]
}
我通过 php laravel 模型关系从 ajax 收到了上述数据,我想使用 javascript 或任何库将数据转换为以下格式下面。
下面的数据就是你想要的。
var data = [
{ food:"chicken", name: "wings", qty:"25", price:"4,900", payment:"Cash" },
{ food:"chicken", name: "lap", qty:"50", price:"9,900", payment:"Credit" }
]
这段 getList
函数的代码可能对您有所帮助:
let getList = function(data, arrayKey, arrayName) {
data[arrayKey].forEach(function(element) {
element[arrayName] = data[arrayName]
}); return data[arrayKey];
};
在这里您可以看到上面函数的 运行 示例:
const data = {
food: "chicken",
list: [{
name: "wings",
qty: "25",
price: "4,900",
payment: "Cash"
},
{
name: "lap",
qty: "50",
price: "9,900",
payment: "Credit"
}
]
};
let getList = function(data, arrayKey, arrayName) {
data[arrayKey].forEach(function(element) {
element[arrayName] = data[arrayName]
}); return data[arrayKey];
};
let result = getList(data, "list", "food");
console.log(result);
您可以轻松解决这个问题,方法是遍历每个项目并将食物对象添加到该对象,如下所示:
data.list.forEach((oneItem) => {
oneItem.food = data.food;
});
data = data.list; //keep the array of list objects only
不使用 lodash 而只使用 ES6 的一种方法是通过 map
和 Object.assign
:
var data = { food: "chicken", list: [{ name: "wings", qty: "25", price: "4,900", payment: "Cash" }, { name: "lap", qty: "50", price: "9,900", payment: "Credit" } ] }
var result = data.list.map(x => Object.assign(x, {food: data.food}))
console.log(result)
lodash/fp
看起来像:
var result = _.flow(_.map(_.extend({ food: data.food })))(data.list)
在lodash
中:
var result = _.map(data.list, x => _.extend(x, {food: data.food}))
var data = {
food:"chicken",
list:[
{ name: "wings", qty: "25", price: "4,900", payment:"Cash" },
{ name: "lap", qty: "50", price: "9,900", payment: "Credit" }
]
}
我通过 php laravel 模型关系从 ajax 收到了上述数据,我想使用 javascript 或任何库将数据转换为以下格式下面。
下面的数据就是你想要的。
var data = [
{ food:"chicken", name: "wings", qty:"25", price:"4,900", payment:"Cash" },
{ food:"chicken", name: "lap", qty:"50", price:"9,900", payment:"Credit" }
]
这段 getList
函数的代码可能对您有所帮助:
let getList = function(data, arrayKey, arrayName) {
data[arrayKey].forEach(function(element) {
element[arrayName] = data[arrayName]
}); return data[arrayKey];
};
在这里您可以看到上面函数的 运行 示例:
const data = {
food: "chicken",
list: [{
name: "wings",
qty: "25",
price: "4,900",
payment: "Cash"
},
{
name: "lap",
qty: "50",
price: "9,900",
payment: "Credit"
}
]
};
let getList = function(data, arrayKey, arrayName) {
data[arrayKey].forEach(function(element) {
element[arrayName] = data[arrayName]
}); return data[arrayKey];
};
let result = getList(data, "list", "food");
console.log(result);
您可以轻松解决这个问题,方法是遍历每个项目并将食物对象添加到该对象,如下所示:
data.list.forEach((oneItem) => {
oneItem.food = data.food;
});
data = data.list; //keep the array of list objects only
不使用 lodash 而只使用 ES6 的一种方法是通过 map
和 Object.assign
:
var data = { food: "chicken", list: [{ name: "wings", qty: "25", price: "4,900", payment: "Cash" }, { name: "lap", qty: "50", price: "9,900", payment: "Credit" } ] }
var result = data.list.map(x => Object.assign(x, {food: data.food}))
console.log(result)
lodash/fp
看起来像:
var result = _.flow(_.map(_.extend({ food: data.food })))(data.list)
在lodash
中:
var result = _.map(data.list, x => _.extend(x, {food: data.food}))