![](/img/trans.png)
[英]How can I minimize a code function that finds repeated values in an array of objects in JavaScript?
[英]Minimize an array with repeaters values Javascript
我正在嘗試用JavaScript做一些有趣的事情,但我做不到。 這是我的意見:
var Input = ['a','a','a','b','b','b','b','c','c','c','a','a','c','d','d','d'];
所以我的輸出是只獲得不同的值並進入一個新的向量。
var Output = SomeFunction(Input);
這就是我要的:
Output = ['a','b','c','a','c','d'];
Y嘗試了這個,但不工作,以及:
function SomeFunction(input){
var out= [];
for (var i = 0; i < input.length - 1; i++) {
if(input[i] == input[i+1]){
out.push(input[i]);
}
}
return out;
}
你可以使用filter()
var input = ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'a', 'a', 'c', 'd', 'd', 'd']; input = input.filter(function(v, i, arr) { return arr[i - 1] !== v; //compare with the previous value }) document.write(JSON.stringify(input));
試試這樣吧
var out= [];
var i = 0;
for (i = 0; i < input.length - 1; i++) {
if(input[i] != input[i+1]){
out.push(input[i]);
}
}
if (out[out.length-1] !== input[i])
out.push(input[i]);
您可以使用反向引用正則表達式
join
將數組轉換為字符串,以便可以在其上使用正則表達式 split
將字符串轉換回數組 var input = ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'a', 'a', 'c', 'd', 'd', 'd']; var str = input.join(''); input = str.replace(/(\\w)\\1*/g, '$1').split(''); console.log(input); document.write('<pre>' + JSON.stringify(input, 0, 2) + '</pre>');
你可以像這樣做一個過濾器
var Input = ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'a', 'a', 'c', 'd', 'd', 'd', 'e']; var Output = SomeFunction(Input); function SomeFunction(input) { var out = input.filter(function(value, i) { return value !== input[i + 1] }); return out; } output.innerHTML = JSON.stringify(Output)
<pre id="output"><pre>
var Input = ['a','a','a','b','b','b','b','c','c','c','a','a','c','d','d','d']; var Output = SomeFunction(Input); function SomeFunction(input){ var out= []; for (var i = 1; i < input.length; i++) { if(input[i] != input[i-1]){ out.push(input[i-1]); } } out.push(input[input.length - 1]); return out; } alert(Output);
這個怎么樣:
var Input = ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'a', 'a', 'c', 'd', 'd', 'd']; function SomeFunction(input) { var out = []; var initStr = input[0]; console.log(initStr) for (var i = 1; i < input.length; i++) { if (input[i] === initStr) { } else { out.push(input[i - 1]); initStr = input[i]; } } out.push(input[i - 1]); console.log(out); } SomeFunction(Input)
示例使用數組過濾器。
非常簡單,只要數組不是太大,並且可以更容易地擴展以比較對象數組中的某些屬性。 對於一個更大的數組,它可能會更快,但在一些其他答案中做一個for循環。
var Input = ['a', 'b', 'c','a', 'b', 'a', 'b', 'c','c'] var Output = Input.filter(function(value,index) { return Input[index - 1] != value; });
function SomeFunction(input) {
var out= [];
out.push(input[i]);
for (var i = 0; i < input.length - 1; i++) {
if(input[i] !== out[out.length-1]){
out.push(input[i]);
}
}
return out;
}
為我工作:
function SomeFunction(input){
var out= [];
for (var i = 0; i < input.length; i++) {
if(input[i] !== input[i+1]){
out.push(input[i]);
}
}
return out;
}
小心變量“輸入”的名稱。 它不是“輸入”,而是“輸入”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.