从现有对象创建新对象

时间:2017-05-23 21:13:47

标签: javascript jquery arrays javascript-objects

我已经有一段时间了,并且无法弄清楚我有什么以及如何使用它。

当我使用description:"Some text here" id:1234 location:Array(1) name:"Some Name" tags: Array(7) 0:Object name:"Landmark" public_id:"landmark" __proto__ 1:Object name:"Park" public_id:"park" __proto__ 时,我得到了回复:

{id:1234,tags:[landmark,park]}

我希望得到这样的东西:

id

我可以通过以下方式获得var thePlaces=[]; $.each(data, function(index, val) { thePlaces.push({ id:val.id }) }) 部分:

id

如何将标记添加到相应的{{1}}?

2 个答案:

答案 0 :(得分:1)

您需要为每个tags迭代data(数组)以获取标记名称。
所以循环中的另一个循环迭代data

var thePlaces=[];
$.each(data, function(index, val) {

  var tagNames=[];

  $.each(val.tags, function(i,tagVal){
    tagNames.push(tagVal.name)
  }

  thePlaces.push({
    id:val.id,
    tags: tagNames
  });
});

答案 1 :(得分:1)

使用Array#map()基于另一个阵列创建新阵列:

// map main array
var thePlaces= data.map(function(item){
    // map location array to get tags array
    var tags = item.location.map(function(loc){
         return loc.name;
    });
    // new object to return for each item in "data"
    return {
       id: item.id,
       tags: tags
    };    
});