需要在数组中用“#”替换值“y”,还需要计算数组中的“y”值。
x = ['a','b','c'];
z = ['z','y','y'];
var a = x.concat(z);
var b = a.sort();
var count = 0;
for(var i = 0; i < b.length; i++){
if(b[i] == "y") {
b['y'] == "#";
var c = count++;
}
}
console.log(b);
console.log(c+1);
答案 0 :(得分:4)
b[i] = "#";
,count
变量,而不是c
b
,因为sort
对给定的数组进行排序。
var x = ['a', 'b', 'c'];
var z = ['z', 'y', 'y'];
var a = x.concat(z);
var count = 0;
a.sort();
for (var i = 0; i < a.length; i++){
if (a[i] == "y") {
a[i] = "#";
count++;
}
}
console.log(a);
console.log(count);
答案 1 :(得分:4)
您可以使用reduce
进行解构分配,以有效地返回2个值
var x = ['a','b','c']
var z = ['z','y','y']
var a = x.concat(z)
var [count, b] = a.reduce(([count,b],x)=> {
if (x === 'y')
return [count + 1, [...b, '#']]
else
return [count, [...b, x]]
}, [0, []])
console.log(count) // 2
console.log(b) // ['a', 'b', 'c', 'z', '#', '#']
如果您真的希望在替换'y'
之前对数组进行排序并获取计数,您应该知道Array.prototype.sort
将改变原始数组。此外,通过引用将数组赋值给变量。
所以当你写这个......
var b = a.sort();
您应该知道a
将被排序,而b
只是对完全相同数组的第二次引用。 b
不是单独的副本。
如果您想制作单独的副本,可以执行此操作
// make B a sorted copy of A. do not modify A.
var b = a.slice(0).sort();
答案 2 :(得分:3)
==
是比较运算符
=
是赋值运算符
更改为:
for(var i = 0; i < b.length; i++){
if(b[i] == "y") {
b [i] =&#34;#&#34 ;;
var c = count++;
}
}
来自
for(var i = 0; i < b.length; i++){
if(b[i] == "y") {
b [&#39; y&#39;] ==&#34;#&#34 ;;
count++;
}
}
x = ['a', 'b', 'c'];
z = ['z', 'y', 'y'];
var a = x.concat(z);
var b = a.sort();
var count = 0;
for (var i = 0; i < b.length; i++) {
if (b[i] == "y") {
b[i] = "#";
count++;
}
}
console.log(b);
console.log(count);
&#13;
答案 3 :(得分:2)
您也可以使用Array#map
。
var x = ['a','b','c'];
var z = ['z','y','y'];
var a = x.concat(z);
var b = a.sort();
var count = 0;
b = b.map(function(v) {
if(v == 'y') {
count++;
return '#';
} else {
return v;
}
});
console.log(b);
console.log(count);
&#13;
答案 4 :(得分:1)
我不确定,但这是你想要的吗?
x = ['a','b','c'];
z = ['z','y','y'];
var a = x.concat(z);
var b = a.sort();
var count = 0;
for(var i = 0; i < b.length; i++){
if(b[i] == "y") {
b[i] = "#";
var c = count++;
}
}
console.log(b);
console.log(c+1);
&#13;
答案 5 :(得分:1)
如果您是较少代码行的粉丝,那么这一行(或两行)实现将是显而易见的。 ;)
但是我回答的主要原因是排序返回值。 如documentation中所述:
sort()方法对数组中的元素进行排序并返回 数组。排序不一定稳定。默认排序顺序 是根据字符串Unicode代码点。
因此sort()
方法执行操作和也会返回结果(数组)。
var x = ['a', 'b', 'c'],
z = ['z', 'y', 'y'],
toReplace = 'y',
replaceWith = '#',
count = 0;
var result = x.concat(z).sort()
.map((v, i, a) => v === toReplace ? ++count && replaceWith : v);
console.log(result, count);
&#13;