JS数组未选择正确的值

时间:2018-10-04 13:31:08

标签: javascript

我正在尝试使用slice()方法从数组中选择项目,但未选择正确的值。

var alphabets = ["A", "B", "C", "D", "E"];
var show = alphabets.slice(1, 2);
console.log(` ${show} `);

它应该输出 B,D ,但只给出: B

从零开始的数组 B 为1,从结束的数组 D 为1

在另一个示例中。

var alphabets = ["A", "B", "C", "D", "E"];
var show = alphabets.slice(1, 3);
console.log(` ${show} `);

以上代码输出: B,C

如何甚至选择元素?

6 个答案:

答案 0 :(得分:3)

slice()方法选择从给定的起始参数开始的元素,并以但不包括给定的结束参数结束。

var alphabets = ["A", "B", "C", "D", "E"];
var show = alphabets.slice(1, 3);
console.log(` ${show} `);

以您的示例为例,“ D”在位置3处,因此在输出中将不包括“ D”。只会在输出中显示“ B”和“ C”。

答案 1 :(得分:2)

let options = [{value: 'b', label: "test1"},{value: 'a', label: "test12"},{value: 'c', label: "test123"}]; let ranks = [{rank: 1, value: "a"},{rank: 2, value: "b"},{rank: 3, value: "c"}]; let temp = ranks.reduce((a,c) => Object.assign(a,{[c.value]:c.rank}), {}); options.sort((a,b) => temp[a.value] - temp[b.value]); console.log(options);方法将数组的一部分的浅表副本返回到从开始到结束(不包括end)选择的新数组对象中。原始数组将不会被修改。

slice()

  

开始可选
  从零开始的索引,开始提取。
  结束可选
  从零开始的索引,在此索引之前终止提取。切片最多提取但不包括末端。

arr.slice([begin[, end]])

如果您对JavaScript有疑问,Mozilla开发人员网络(MDN)是一个不错的选择。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

答案 2 :(得分:1)

这是切片的工作原理: 切片(开始,结束) start是起始索引,从0开始。 end是结束索引,但不包括

在您的情况下:

  • A --->索引0
  • B --->索引1
  • C --->索引2
  • D --->索引3
  • E --->索引4

因此,slice(1,2)将仅返回索引“ 1”,即B

答案 3 :(得分:0)

由于您没有正确使用第二个参数,请参阅Array.prototype.slice的文档。

  

slice()方法返回数组一部分的浅表副本   放入从头到尾选择的新数组对象中(不包括结尾)。   原始数组不会被修改

请参阅MDN/JS/Array/slice

答案 4 :(得分:0)

  

slice()方法以数组形式返回数组中选定的元素。   新的数组对象。

     

slice()方法选择从给定开始处开始的元素   参数,并以给定的end参数结尾,但不包括该参数。

请参见以下具有相同数组的示例。

    var alphabets = ["A", "B", "C", "D", "E"];
    
    console.log(alphabets .slice(2));
    // expected output: Array ["C", "D", "E"]
    
    console.log(alphabets .slice(2, 4));
    // expected output: Array ["C", "D"]
    
    console.log(alphabets .slice(1, 5));
    // expected output: Array ["B", "C", "D", "E"]

答案 5 :(得分:0)

slice()返回从第一个索引开始直到第二个索引(不包含)的数组副本。如果要从第二个值的末尾开始计数,则必须使用负索引。

    var alphabets = ["A", "B", "C", "D", "E"];
    var show = alphabets.slice(1, 3);
    console.log(` ${show} `);

这将显示BC

以及:

    var alphabets = ["A", "B", "C", "D", "E"];
    var show = alphabets.slice(1, -2);
    console.log(` ${show} `);