【问题标题】:JavaScript: Create new array from non-sequential existing array elements [closed]JavaScript:从非顺序的现有数组元素创建新数组[关闭]
【发布时间】:2017-09-21 12:39:27
【问题描述】:

我有

var arr1 = ['a', 'b', 'c', 'd', 'e'];

我想创建一个新数组 arr2,它由 arr1 的索引 1 和 4 中的元素组成。 我看过 slice() 但它只能按顺序工作。是否有我缺少的现有方法或者我必须创建一个? 谢谢。

【问题讨论】:

  • 问题不清楚,非顺序是什么意思?
  • 你期待什么结果?
  • 请添加想要的结果和您尝试过的内容
  • arr2.push(arr1[0]);arr2.push(arr1[4]);
  • 接受@Nina 的。示例应该是 1 和 4 而不是 1 和 5。我现在已经修复了。感谢所有建议。非常感谢

标签: javascript arrays methods


【解决方案1】:

我想创建一个新数组 arr2,由 arr1 的索引 1 和 5 中的元素组成

这很简单,不需要方法,只需要文字符号:

var arr2 = [arr1[1], arr1[5]];

(我应该注意到您的数组中没有“索引 5”。您的意思是索引 0 和 4?)

实时示例(使用 1 和 5):

var arr1 = ['a', 'b', 'c', 'd', 'e'];
var arr2 = [arr1[1], arr1[5]];
console.log(arr2);

实时示例(使用 0 和 4):

var arr1 = ['a', 'b', 'c', 'd', 'e'];
var arr2 = [arr1[0], arr1[4]];
console.log(arr2);

【讨论】:

  • @Rajesh OP 确实在5 上说过索引。不是4
【解决方案2】:

只分配它们?

var arr1 = ['a', 'b', 'c', 'd', 'e'];
var arr2 = [arr1[0],arr1[4]];

console.log(arr1)
console.log(arr2)

【讨论】:

  • 正在走那条路,但想要更快的东西。将接受@Nina 的建议,但承认如果不是连续的,则必须在某个地方单独解决。谢谢。
【解决方案3】:

您可以将所需的索引作为数组并映射值。

var array = ['a', 'b', 'c', 'd', 'e'],
    indices = [1, 4],
    result = indices.map(i => array[i]);
    
console.log(result);

【讨论】:

  • 想知道 OP 是指索引#5 还是第 5 项?
  • @mplungjan:OP 明确表示“索引 1 和 5”。但是,是的,他/她可能指的是 0 和 4。:-)
  • @T.J.Crowder 我知道 - 这就是你得到支持的原因 ;)
  • 无论如何它适用于任何索引。
  • 完美。谢谢
【解决方案4】:

实现此目的的另一种方法:

    var arr1 = ['a', 'b', 'c', 'd', 'e'];
    var arr2 = arr1.filter((it, index) => index === 0 || index === 4);
    console.log(arr2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多