我正在使用Javascript(ES6) /FaceBook反应,并试图获得大小不同的数组的前3个元素。我想做Linq take(n)的等效。

在我的Jsx文件中我有以下内容:

var items = list.map(i => {
  return (
    <myview item={i} key={i.id} />
  );
});

然后得到我尝试的前3个项目

  var map = new Map(list);
    map.size = 3;
    var items = map(i => {
      return (<SpotlightLandingGlobalInboxItem item={i} key={i.id} />);
    });

这并没有起作用,因为map没有一个set函数。

你能帮帮我吗?


当前回答

也许我错过了一些东西,但感觉像踢开了一扇门,建议使用splice()?当然,重要的是要记住这将修改数组。

const myArray = [ '一',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ', ] myArray.splice (3) console.log (myArray) //期望输出:['one', 'two', 'three']

也可以获取数组中被保留元素之外的元素:

const myArray = [ '一',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ', ] const afterFirstThree = myArray.splice(3) console.log (myArray) //期望输出:['one', 'two', 'three'] console.log (afterFirstThree) / /预期的输出:[“4”、“5”、“6”、“7”) //如果n大于myArray。整个数组的长度被保留,如果试图获取返回值,它将是一个空数组

其他回答

我相信你在寻找的是:

// ...inside the render() function

var size = 3;
var items = list.slice(0, size).map(i => {
    return <myview item={i} key={i.id} />
});                       
return (
  <div>
    {items}
  </div>   
)

不要尝试使用映射函数来实现这一点。Map函数应该用于将值从一个事物映射到另一个事物。当输入和输出的数量匹配时。

在这种情况下,使用过滤器函数,该函数在数组上也可用。当您希望选择性地获取符合特定条件的值时,使用过滤器函数。然后你可以像这样写代码

var items = list
             .filter((i, index) => (index < 3))
             .map((i, index) => {
                   return (
                     <myview item={i} key={i.id} />
                   );
              });

可以使用数组索引进行过滤。

var months = ['Jan', 'March', 'April', 'June']; month = Months .filter((month,idx) => idx < 2) console.log(个月);

要获取数组的前n个元素,使用

const slicedArray = array.slice(0, n);

使用lodash, take函数,您可以通过以下方式实现:

_.take([1, 2, 3]);
// => [1]
 
_.take([1, 2, 3], 2);
// => [1, 2]
 
_.take([1, 2, 3], 5);
// => [1, 2, 3]
 
_.take([1, 2, 3], 0);
// => []