我想获取javascript数组范围之间的值

时间:2018-08-10 04:21:25

标签: javascript

**这是我的数组,我正在尝试设置数组的值,如何使用循环进行设置。 **

when i provide the range like i want to get (14.28,42.84) result will be (J,I,H).


var arr = [];
arr[14.28] = "J";
arr[28.56] = "I";
arr[42.84] = "H";
arr[57.12] = "G";
arr[71.40] = "F";
arr[85.68] = "E";
arr[99.96] = "D";
var citrus = arr.slice(values);
alert(citrus);

如果我的值介于(0,100)之间该怎么办?

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您想要这种功能,可能就不需要阵列。 您可以自己上课或上课。

class RangeThingy {
  constructor() {
    this.vals = [];
  }

  set(number, value) {
    this.vals.push({
      number,
      value,
    });
  }

  getRange(start, end) {
    return this.vals.filter(val => start <= val.number && val.number <= end).map(val => val.value);
  }
}
const range = new RangeThingy();
range.set(14.28, 'J');
range.set(28.56, 'I');
range.set(42.84, 'H');
range.set(57.12, 'G');
// etc...
range.getRange(14.28, 42.84) // returns ['J', 'I', 'H']

答案 1 :(得分:1)

就JavaScript sytanx而言,您所做的事情并非无效,但没有意义,因为您无法使用常规方法遍历数组。像这样的语句:

arr[14.28] = "J";

基本上是在为数组分配自定义属性,而不是将项目设置为数组索引(尝试使用Object.keys(arr)获取键),这使得检索值变得更加复杂。

我建议为此目的使用JavaScript对象。这些允许您分配任意的键/值对,但是需要注意的是,不能保证键的顺序。

以下是尝试使用对象解决问题的尝试。这可能不是一个完整的解决方案,但是它会尝试指导您正确完成这些任务。

let obj = {};
obj[14.28] = "J";
obj[28.56] = "I";
obj[42.84] = "H";
obj[57.12] = "G";
obj[71.40] = "F";
obj[85.68] = "E";
obj[99.96] = "D";

// Returns the items in the specific range
function getRange(a, b) {
  let
    // Get all the keys of the object
    keys = Object.keys(obj),

    // Get the start/end indices in object's keys so that
    // we can slice the keys array to get all the keys in the
    // specified range
    start = keys.findIndex(k => k == a),
    end = keys.findIndex(k => k == b),

    // Get all the keys in the specified range
    sliced = keys.slice(start, end + 1);

  // Returns the array of values for the keys
  return sliced.map(k => obj[k]);
}

console.log(getRange(14.28, 42.84));