Javascript 数组转换/操作

Javascript 数组转换/操作,javascript,arrays,underscore.js,lodash,Javascript,Arrays,Underscore.js,Lodash,我有一个这样的数组: array1=[{value:1, label:'value1'},{value:2, label:'value2'}, {value:3, label:'value3'}] 我有第二个整数数组: array2=[1,3] 我希望在不使用循环的情况下获得此阵列,用于: arrayResult = ['value1', 'value3'] 有人知道如何使用javascript吗 提前感谢您可以像这样使用和 var数组1=[ {value:1,标签:'value1'},

我有一个这样的数组:

array1=[{value:1, label:'value1'},{value:2, label:'value2'}, {value:3, label:'value3'}]
我有第二个整数数组:

array2=[1,3]
我希望在不使用循环的情况下获得此阵列,用于:

arrayResult = ['value1', 'value3']
有人知道如何使用javascript吗

提前感谢

您可以像这样使用和

var数组1=[
{value:1,标签:'value1'},{value:2,标签:'value2'},{value:3,标签:'value3'}
];
var array2=[1,3];
var arrayResult=array1.过滤器(函数(el){
返回数组2.indexOf(el.value)>=0;
}).地图(功能(el){
返回el标签;
});
console.log(arrayResult)一个简单的例子就足够了。在将来,你应该认真地发布一些代码来展示你的尝试

var array1=[{value:1, label:'value1'},{value:2, label:'value2'}, {value:3, label:'value3'}];
var array2=[1,3];
var result = [];

for (var i = 0; i < array2.length; i++){
  result.push(array1[array2[i]-1].label);
}
console.log(result); //["value1", "value3"]
var array1=[{value:1,标签:'value1'},{value:2,标签:'value2'},{value:3,标签:'value3'}];
var array2=[1,3];
var结果=[];
对于(变量i=0;i

数组2
中的元素映射到
数组1
中元素的
标签
属性以及相应的

array2                      // Take array2 and
  .map(                     // map
    function(n) {           // each element n in it to
      return array1         // the result of taking array1
        .find(              // and finding
          function(e) {     // elements
            return          // for which 
              e.value       // the value property
              ===           // is the same as 
              n;            // the element from array2
          }
        )
        .label              // and taking the label property of that elt
      ;
    }
  )
;
无注释,在ES6中:

array.map(n => array1.find(e => e.value === n).label);

答案很好。如果我可以建议使用
Map
的另一种选择,因为这似乎适合于键:值对解决方案

var arr1 = [ {value:1, label:'value1'}, {value:2, label:'value2'}, {value:3, label:'value3'} ];
var arr2 = [1, 3];

// create a Map of the first array making value the key.
var map = new Map( arr1.map ( a => [a.value, a.label] ) );

// map second array with the values of the matching keys
var result = arr2.map( n => map.get ( n ) );
当然,这假设第一个数组的key:value结构不会变得更复杂,可以用更简单的形式编写

var arr1 = [[1,'value1'], [2,'value2'], [3,'value3']]; // no need for names
var arr2 = [1, 3];

var map = new Map( arr1 ); // no need to arr1.map ;
var result = arr2.map( n => map.get ( n ) );

只需使用uxby.indexBy函数对第一个数组进行索引:

var indexedArray1 = _.indexBy(array1, "value");
_.map(array2, function(x) { return indexedArray1[x].label; });

到目前为止,您尝试了什么?数组1中的值字段有什么意义?它总是索引+1吗?如果是这样的话,您不需要它,只需要让array1=['value1','value2',…]说明没有指明array2是什么represents@bokzor注意
.find
是一种新方法,IE不支持它,是的。但是我更喜欢第一个。不过还是要谢谢你:-)