简体   繁体   English

将新元素推送到多维数组javascript中的obj数组

[英]push new element to array of obj in multidimensional array javascript

I have an array of objects which is like 我有一个像这样的对象数组

 [ { "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 } ] 

and I want to add new element to each obj like this, "count" : 12, I tried to do this using .push but it will add the count to the end of array instead of adding it to each obj, How can I solve this issue? 并且我想向每个obj这样添加新元素,即“ count”:12,我尝试使用.push来做到这一点,但是它将计数添加到数组的末尾而不是将其添加到每个obj,我该如何解决这个问题?

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;
}

You cannot add to multiple elems, you have to loop trough and add to each one. 您不能添加多个元素,必须循环槽并添加到每个元素。 It depends on you wich way you go (of the upper examples). 这取决于您的操作方式(在上面的示例中)。

Also push is made for Arrays not for Objects (push adds just a value not a key, an object needs a key value pair). 同样,对数组而不对对象进行推(推仅添加一个值而不是键,对象需要一个键值对)。

For you will be easy to use map. 为您将易于使用的地图。 Try this: 尝试这个:

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);

you can add properties of object using forEach method. 您可以使用forEach方法添加对象的属性。

and push is not method to add property of an object. 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); 

You could loop with Array#forEach and add a new property with a property accessor 您可以使用Array#forEach循环并使用属性访问器添加新属性

 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; } 

As below.. 如下..

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);

The simple way is you need to use a loop 简单的方法是您需要使用循环

arr is your array. arr是您的数组。

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

  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); 

hope this helps.... 希望这可以帮助....

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM