【问题标题】:how to get the non-removed array element on using splice method in Javascript如何在Javascript中使用拼接方法获取未删除的数组元素
【发布时间】:2020-09-24 03:20:38
【问题描述】:

我是 js 新手,使用 splice 从数组中删除元素,但是我总是得到删除的数组。 例如:

let myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
myFish.splice(-1,1) // goves o/p ['sturgeon']

但是我想要剩余的数组元素 预期 o/p:

['angel', 'clown', 'mandarin']

如何做到这一点?

【问题讨论】:

  • 未删除的在您的数组中,myFish,在这里。
  • splice 更改了数组,这就是它返回已删除的原因。
  • slice,另一方面,在不更改数组的情况下为您提供数组的一部分。
  • @iAmOren 一个答案不是比三个 cmets 更好吗? :-)
  • 所以这基本上是我拥有的一个字符串:str= "Hello_Worksl_SHARED" 我正在做 split() 然后拼接-str.split("_").splice(-1,1) 但是如果我需要访问未删除的数组,我需要执行 2 个步骤:let a = str.split("_") 然后a.splice(-1,1) 然后访问a。有没有一种方法可以一步完成所有事情?

标签: javascript


【解决方案1】:

var str="Hello_Worksl_SHARED", splitStr, strMinusEnd;
strMinusEnd=(splitStr=str.split("_")).slice(0,-1);

console.log("str="+str);
console.log("splitStr="+splitStr);
console.log("strMinusEnd="+strMinusEnd);

在您发表评论之前提供额外信息:

未删除的在您的数组中,myFish

splice 更改了数组,这就是它返回已删除的原因。

另一方面,slice 在不更改数组的情况下为您提供数组的一部分。


我不确定你想要什么,所以这里就是所有内容:

var str="Hello_Worksl_SHARED";
var arrFromStr, arrMinusEnd, endItem;

[arrFromStr, arrMinusEnd, endItem] = 
  str.split("_")
  .reduce(
    (acc, cv, idx, arr) => {
      if(idx<arr.length-1) acc[1].push(cv);
      else {
        acc[0]=arr;
        acc[2]=cv;
      };
      return acc;
    },
    [null,[],[]]
  )
;

console.log("str=\""+str+"\"");
console.log("arrFromStr=");
console.log(arrFromStr);
console.log("arrMinusEnd=");
console.log(arrMinusEnd);
console.log("endItem=\""+endItem+"\"");
.as-console-wrapper { max-height: 100% !important; top: 0; }

我们正在使用数组的解构。
= 的右侧返回一个包含 3 个元素的数组。
每一个都被恭敬地(?)分配给=左侧的3个变量。

为清楚起见,reduce 分布在多行中。

【讨论】:

  • 如果你想结束和开始而不是完整的sliced 数组,你可以使用稍微修改(但使用相同的方法)var str="Hello_Worksl_SHARED", end, start; end=(start=str.split("_")).splice(-1,1); 也许值得添加到答案中
  • @JanStránský,随着有关所需输出的更多详细信息的披露,需要进行修改...
猜你喜欢
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
相关资源
最近更新 更多