**这是我的数组,我正在尝试设置数组的值,如何使用循环进行设置。 **
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)之间该怎么办?
答案 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));