так что я сплайсирую массив объектов, во-первых, чтобы сделать копию одного из объектов. Это если кто-то хочет «разбить» свой заказ, то есть сделать новый заказ того же продукта, но для другой даты доставки.Splice Then Modify Array
В любом случае, я ожидаю, что, допустив, что аргументы, переданные, например, являются «Ежедневными хлебами» и «Apple Streusel», что я получаю второй «Apple Streusel» в массиве объектов, но .text
должен стать «Apple» Streusel Additional ". Вместо этого я получаю два объекта под названием «Apple Streusel Additional», а не только один.
Соответствующая часть моей JSON, который модифицируется:
$scope.theBreadsList = [{
category: 'Daily Breads',
breads: [{
text: 'Apple Streusel',
category: 'Daily Breads',
isDaily: true,
price: 7.25,
quantity: 0,
days: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday"],
daysNotAvailable: null,
onMenu: true,
canSlice: false,
orderDates: [],
ingredients: ["White Flour", "Honey", "Water", "Butter", "Brown Sugar", "Eggs", "Applesauce", "Apples", "White Sugar", "Yeast", "Spices", "Vanilla", "Salt"]
},
{
text: 'Honey Whole Wheat',
category: 'Daily Breads',
isDaily: true,
price: 5.65,
quantity: 0,
days: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday"],
daysNotAvailable: null,
onMenu: true,
canSlice: true,
orderDates: [],
ingredients: ["Organic Whole Wheat Flour","Filtered Water","Honey","Yeast","Salt"],
},
{
text: 'Peasant White',
category: 'Daily Breads',
isDaily: true,
price: 5.65,
quantity: 0,
days: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday"],
daysNotAvailable: null,
onMenu: true,
canSlice: true,
orderDates: [],
ingredients: ["Unbleached Unbromated White Flour", "Filtered Water","Honey","Yeast","Salt"]
},
{
text: 'Rolls (White or Wheat)',
category: 'Daily Breads',
isDaily: true,
price: 4.75,
quantity: 0,
days: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday"],
daysNotAvailable: null,
onMenu: true,
canSlice: false,
orderDates: []
},
{
text: 'Seven Grain Crunch',
category: 'Daily Breads',
isDaily: true,
price: 5.95,
quantity: 0,
days: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday"],
daysNotAvailable: null,
onMenu: true,
canSlice: true,
orderDates: [],
ingredients: ["Freshly Milled Organic Whole Wheat Flour","Seven Grain Mix (Hard & Soft Wheat, Oats, Rye, Millet, Barley, Triticale)", "Filtered Water","Honey","Yeast","Salt"]
},
{
text: 'Three Seed Healthy',
category: 'Daily Breads',
isDaily: true,
price: 6.25,
quantity: 0,
days: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday"],
daysNotAvailable: null,
onMenu: true,
canSlice: true,
orderDates: [],
ingredients: ["Organic Whole Wheat Flour","Honey","Filtered Water","Sunflower Seeds","Sesame Seeds","Flax Seeds","Yeast","Salt"]
}]
Моя функция:
function add2JSON(breadCategory,bread){
for (var i = 0; i < $scope.theBreadsList.length; i++) {
if ($scope.theBreadsList[i].category === breadCategory) {
for (var z = 0; z < $scope.theBreadsList[i].breads.length; z++) {
if ($scope.theBreadsList[i].breads[z].text === bread) {
//importante!
console.log(z);
$scope.theBreadsList[i].breads.splice(z, 0, $scope.theBreadsList[i].breads[z]);
console.log($scope.theBreadsList, $scope.theBreadsList[i].breads[z], $scope.theBreadsList[i].breads[z+1]);
$scope.theBreadsList[i].breads[z+1].text = $scope.theBreadsList[i].breads[z+1].text + " Additional";
$scope.theBreadsList[i].breads[z+1].onMenu = false;
return;
}
}
}
}
}
Мой вызов:
add2JSON("Daily Breads","Apple Streusel");
Как копировать объекты: http://stackoverflow.com/questions/728360/most-elegant-way-to-clone-a-javascript-object – trincot