【发布时间】:2016-01-12 05:24:10
【问题描述】:
我有一个这样的数组
var arr = [
"/a_3312368_392921_800MHz",
"/a_3312368_392853_900MHz",
"/a_3312368_578261_1GHz",
"/a_3312368_578189_120GHz",
"/a_3312368_578167_140GHz",
"/a_3312368_578230_160GHz",
"/a_3312368_578192_180GHz",
"/a_3312368_397393_183GHz",
"/a_3312368_582870_186GHz",
"/a_3312368_578174_190GHz",
"/a_3312368_578177_2GHz",
"/a_3312368_578922_210GHz",
"/a_3312368_578479_220GHz",
"/a_3312368_578357_226GHz",
"/a_3312368_578182_240GHz",
"/a_3312368_578919_250GHz",
"/a_3312368_578349_253GHz",
"/a_3312368_578639_280GHz",
"/a_3312368_579178_3GHz"
];
我需要从操作员选择中获得价值。我有一些这样的运营商
`> , < , = , <= , >=`
这里是选择的值,例如
var selection = "/a_3312368_578189_120GHz";
例如我当前的操作员
var operator = ">";
这是我写的一些代码。
var string_array = [];
for(var i = 0; i < arr.length; i++){
if(selection == arr[i]){
break;
}
string_array.push(arr[i]);
}
console.log(string_array);
它给了我正确的结果。但是当我用地图尝试它时,它会产生错误Can't have break outside of loop。
string_array = arr.map(function(item) { if (selection == item){ break; } else {return item;} });
我怎样才能为此编写一行代码。
【问题讨论】:
-
使用Array.prototype.some 或.every 迭代直到条件返回真或假。
-
@RobG 但他们不会“自动”构造数组...
-
One liner 不应该是你的设计目标。可读、可维护的代码应该是。作为次要目标,性能(早期中断对于大数据至关重要。
for(...) { ...}优于数组迭代函数) -
@RobG 要求是一个班轮。
some/every不适合这里的账单。 -
map返回数组元素数相同,需要filter,或者reduce
标签: javascript loops search dictionary