Javascript 将数组中每个对象的特定值复制到另一个数组中的最佳方法是什么?

Javascript 将数组中每个对象的特定值复制到另一个数组中的最佳方法是什么?,javascript,arrays,vue.js,Javascript,Arrays,Vue.js,由于引导Vue Form Select元素使用数组中对象的“text”和“value”值,因此我想从现有数组中创建一个新数组,其中每个对象都包含多个值。我需要从现有数组中的每个对象复制其中两个值'id'和'msg',并在新数组中创建具有相同索引的对象,使用'id'和'msg'中的值填充它们的'text'和'value'值。最好的方法是什么 这就是我想到的: selectoptions(){ var options = []; for (var i in this.proposals) {

由于引导Vue Form Select元素使用数组中对象的“text”和“value”值,因此我想从现有数组中创建一个新数组,其中每个对象都包含多个值。我需要从现有数组中的每个对象复制其中两个值'id'和'msg',并在新数组中创建具有相同索引的对象,使用'id'和'msg'中的值填充它们的'text'和'value'值。最好的方法是什么

这就是我想到的:

selectoptions(){
  var options = [];
  for (var i in this.proposals) {
    options[i] = { value: this.proposals[i].id, text: this.proposals[i].msg};
  }
  return options;
}
我想知道是否有更好的方法来做到这一点,可能是使用Array.prototype.map。

您可以创建一个pick函数,仅从对象中拾取所需的属性,并将所需的映射从现有对象传递到新对象。我们可以使用Object.entries,然后使用filter和Object.fromEntries来执行此操作

例如:

设a=[{ id:1, 味精:“一些味精1”, 数据:“一些数据” }, { id:2, 味精:“一些味精2”, 数据:“一些数据” }, { id:3, 味精:“一些味精3”, 数据:“一些数据” }, ] 函数pickobj,属性映射{ 返回Object.fromEntriesObject.EntriesObject.ReduceAc,[键,值]=>{ 如果属性映射[key]{ acc.push[属性映射[键],值]; } 返回acc } , []; }
console.loga.mapel=>pickel,{id:value,msg:text} 如果提案是一个对象,则执行以下操作:

const result = Object.keys(this.proposals).map((key) => ({
    value: this.proposals[key].id,
    text: this.proposals[key].proposal
}))
如果建议是一个数组

   const result = this.proposals.map((currentProposal) => ({
        value: currentProposal.id,
        text: currentProposal.proposal
    }))
这将完成以下工作:

this.proposals = this.proposals.map(el => {
    return {value:el.id, text: el.msg}
});

您可以查看Array.map函数的文档。

也可以使用现有数组,而不是映射到新数组。 b-select允许您将b-select-option写入将用作选项的标记中。 因此,您可以使用现有数组创建v-for,并在b-select-option中添加id作为值和msg作为文本

如果在选择值时需要整个对象,还可以将其传递到value属性中,select的v模型将返回整个对象

新Vue{ el:“应用程序”, 资料{ 返回{ 选中:空, selected2:null, 信息:[ {id:1,msg:'这是消息1',用户:'Hiws'}, {id:2,msg:'这是消息2',用户:'Hiws'}, {id:3,msg:'这是消息3',用户:'Hiws'} ] } } } v-model是唯一的id {{msg}} 选定值:{{Selected}} v型模型是整个对象 {{message.msg}} 选定值:{{selected2}}
使用Array.prototype.map。此外,向我们展示一些示例数据和您实际尝试过的内容总是很有帮助的。更新了我的帖子。你能解释一下我如何使用Array.prototype.map来实现这个目标吗?我喜欢这个解决方案,它看起来是最好的方式:谢谢