2017-01-02 2 views
0

У меня есть массив объектов, который, кактолкать новый элемент в массив OBJ в многомерном массиве Javascript

[ 
 
    { 
 
     "id" : 1, 
 
     "title" : "name1", 
 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
 
     "image" : "sampledata/products/1.jpg", 
 
     "price" : 10 
 
    }, 
 
    { 
 
     "id" : 2, 
 
     "title" : "name2", 
 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
 
     "image" : "sampledata/products/2.jpg", 
 
     "price" : 100 
 
    }, 
 
    { 
 
     "id" : 3, 
 
     "title" : "name3", 
 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
 
     "image" : "sampledata/products/3.jpg", 
 
     "price" : 200 
 
    } 
 
    ]

и я хочу, чтобы добавить новый элемент в каждой OBJ как это, " count ": 12, я попытался сделать это с помощью .push, но он добавит счетчик в конец массива, а не добавит его к каждому объекту. Как я могу решить эту проблему?

+0

Могли бы вы добавить свой код JavaScript, или Plunkr с вашим кодом, как это в настоящее время? –

+1

Кстати, это не очень многомерный массив (это было бы [[], [], []]), его массив объектов –

ответ

3
for(elem of array){ 
    elem["count"]=12; 
} 
//OR 
for(key in array){ 
array[key]["count"]=12; 
} 
//OR 
array.forEach(function(elem){ 
    elem["count"]=12; 
} 
//OR 
newarray=array.map(function(el){ 
return el["count"]=12,el; 
} 

Вы не можете добавлять к нескольким elems, вы должны петли корыта и добавить к каждой из них. Это зависит от вас, как вы идете (из верхних примеров).

Кроме того, push предназначен для массивов не для объектов (push добавляет только значение, а не ключ, для объекта требуется пара значений ключа).

0

вы можете добавить свойства объекта, используя метод forEach.

и push не метод для добавления свойства объекта.

var arr=[ 
 
    { 
 
     "id" : 1, 
 
     "title" : "name1", 
 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
 
     "image" : "sampledata/products/1.jpg", 
 
     "price" : 10 
 
    }, 
 
    { 
 
     "id" : 2, 
 
     "title" : "name2", 
 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
 
     "image" : "sampledata/products/2.jpg", 
 
     "price" : 100 
 
    }, 
 
    { 
 
     "id" : 3, 
 
     "title" : "name3", 
 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
 
     "image" : "sampledata/products/3.jpg", 
 
     "price" : 200 
 
    } 
 
    ] 
 
arr.forEach(function(a){a["count"] = 12}) 
 
console.log(arr);

0

Вы могли бы петля с Array#forEach и добавить новое свойство с property accessor

var data = [{ id: 1, title: "name1", description: "Lorem ipsum ...", image: "sampledata/products/1.jpg", price: 10 }, { id: 2, title: "name2", description: "Lorem ipsum ...", image: "sampledata/products/2.jpg", price: 100 }, { id: 3, title: "name3", description: "Lorem ipsum ...", image: "sampledata/products/3.jpg", price: 200 }]; 
 

 
data.forEach(function (a) { 
 
    a.count = 12; 
 
}); 
 

 
console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }

1

Для вас будет легко использовать карту. Попробуйте это:

var result = [ 
    { 
     "id" : 1, 
     "title" : "name1", 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
     "image" : "sampledata/products/1.jpg", 
     "price" : 10 
    }, 
    { 
     "id" : 2, 
     "title" : "name2", 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
     "image" : "sampledata/products/2.jpg", 
     "price" : 100 
    }, 
    { 
     "id" : 3, 
     "title" : "name3", 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
     "image" : "sampledata/products/3.jpg", 
     "price" : 200 
    } 
    ].map(function(item) { 
    item["test"] = "new item"; 
     return item; 
}); 

console.log(result); 
0

Как ниже ..

var arr=[ 
    { 
     "id" : 1, 
     "title" : "name1", 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
     "image" : "sampledata/products/1.jpg", 
     "price" : 10 
    }, 
    { 
     "id" : 2, 
     "title" : "name2", 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
     "image" : "sampledata/products/2.jpg", 
     "price" : 100 
    }, 
    { 
     "id" : 3, 
     "title" : "name3", 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
     "image" : "sampledata/products/3.jpg", 
     "price" : 200 
    } 
    ]; 
arr.forEach(function (obj) { 
    obj.count = 12; 
}); 

alert(arr[0].count); 
alert(arr[1].count); 
alert(arr[2].count); 
0

Простой способ это вам нужно использовать цикл

обр Является ли ваш массив.

for(var i=0;i<arr.length;i++) { 
     var obj = arr[i]; 
    obj.count = 12; 
} 
+0

В то время, когда я писал свой ответ, их не было. –

+0

Но вы arent последний ... –

0

let arr = [ 
 
    { 
 
     "id" : 1, 
 
     "title" : "name1", 
 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
 
     "image" : "sampledata/products/1.jpg", 
 
     "price" : 10 
 
    }, 
 
    { 
 
     "id" : 2, 
 
     "title" : "name2", 
 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
 
     "image" : "sampledata/products/2.jpg", 
 
     "price" : 100 
 
    }, 
 
    { 
 
     "id" : 3, 
 
     "title" : "name3", 
 
     "description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, nesciunt hic aut? Saepe nihil autem nesciunt, ab quisquam animi, aperiam fugit? Ut velit a, in perspiciatis error inventore. Dolorum, eligendi.", 
 
     "image" : "sampledata/products/3.jpg", 
 
     "price" : 200 
 
    } 
 
    ] 
 
arr.forEach((val) =>{val['count'] = 12;}) 
 
console.log(arr);

надеюсь, что это помогает ....

+0

Действительно ?? Ответ 7-го ... –

Смежные вопросы