找出给定数字中哪一个与Javascript中的其他数字不同
我正在努力解决这个问题。有一个数字串,在给定的数字中,程序会找到一个均匀度不同的数字,并返回该数字的位置。元素必须通过其索引返回(数字是数字所在的实际位置)。如果其索引为0,则必须将其作为1返回。到目前为止我已经有了这个,但它还没有通过一次测试。我不太清楚为什么,因为我觉得应该这样。有人能看到错误是什么吗?感谢您的帮助找出给定数字中哪一个与Javascript中的其他数字不同,javascript,for-loop,indexing,split,Javascript,For Loop,Indexing,Split,我正在努力解决这个问题。有一个数字串,在给定的数字中,程序会找到一个均匀度不同的数字,并返回该数字的位置。元素必须通过其索引返回(数字是数字所在的实际位置)。如果其索引为0,则必须将其作为1返回。到目前为止我已经有了这个,但它还没有通过一次测试。我不太清楚为什么,因为我觉得应该这样。有人能看到错误是什么吗?感谢您的帮助 function iqTest(numbers) { var num = numbers.split(" "); var odd = 0; var eve
function iqTest(numbers) {
var num = numbers.split(" ");
var odd = 0;
var even = 0;
var position = 0;
for(var i = 0; i < num.length; i++) {
if(num[i]%2!==0) {
odd++;
if(odd===1) {
position = num.indexOf(num[i]) + 1;
}
}
else if(num[i]%2===0) {
even++;
if(even===1) {
position = num.indexOf(num[i]) + 1;
}
}
}
return position;
}
iqTest("2 4 7 8 10") output 3
iqTest("2 1 2 2") output 2
iqTest("1 2 2") outputs 2 when it should be 1
功能测试(数字){
var num=数字。拆分(“”);
var奇数=0;
var偶数=0;
var位置=0;
对于(变量i=0;i
您必须定义不同的“均匀度”。对这两种情况使用不同的计数器,如果没有不同的计数器,则返回-1。大概是这样的:
function iqTest(numbers) {
var num = numbers.split(" ");
var odd = 0;
var even = 0;
var positionOdd = 0;
var positionEven = 0;
for(var i = 0; i < num.length; i++) {
if(num[i]%2!==0) {
odd++;
if(odd===1) {
positionOdd = i + 1;
}
}
else if(num[i]%2===0) {
even++;
if(even===1) {
positionEven = i + 1;
}
}
}
if (odd == 1)
return positionOdd;
else if (even == 1)
return positionEven;
else
return -1;
}
功能测试(数字){
var num=数字。拆分(“”);
var奇数=0;
var偶数=0;
var位置奇数=0;
var=0;
对于(变量i=0;i
请注意,如果您正好有一个偶数和一个奇数,后者将使用我的方法返回。从我的解决方案开始,根据您的意愿调整逻辑 你必须定义哪个“均匀度”是不同的。对这两种情况使用不同的计数器,如果没有不同的计数器,则返回-1。大概是这样的:
function iqTest(numbers) {
var num = numbers.split(" ");
var odd = 0;
var even = 0;
var positionOdd = 0;
var positionEven = 0;
for(var i = 0; i < num.length; i++) {
if(num[i]%2!==0) {
odd++;
if(odd===1) {
positionOdd = i + 1;
}
}
else if(num[i]%2===0) {
even++;
if(even===1) {
positionEven = i + 1;
}
}
}
if (odd == 1)
return positionOdd;
else if (even == 1)
return positionEven;
else
return -1;
}
功能测试(数字){
var num=数字。拆分(“”);
var奇数=0;
var偶数=0;
var位置奇数=0;
var=0;
对于(变量i=0;i
请注意,如果您正好有一个偶数和一个奇数,后者将使用我的方法返回。从我的解决方案开始,根据您的意愿调整逻辑 您的代码过于复杂
因为第一个数字决定了你要找的是偶数还是奇数,所以要分别计算。然后,找到第一个不匹配的数字
function iqTest(numbers) {
numbers = numbers.split(" ");
var parity = numbers.shift() % 2;
for( var i=0; i<numbers.length; i++) {
if( numbers[i] % 2 != parity) {
return i+2; // 1-based, but we've also skipped the first
}
}
return 0; // no number broke the pattern
}
function iqTest(numbers){
// ...
const numArr = numbers.split(' ');
const checkStatus = num => (parseInt(num) % 2) ? 'odd' : 'even';
const findUniqueStatus = array => {
let numEvens = 0;
array.forEach(function(value){
if (checkStatus(value) == 'even') { numEvens++; }
});
return (numEvens === 1) ? 'even' : 'odd'
}
let statuses = numArr.map(checkStatus),
uniqueStatus = findUniqueStatus(numArr);
return statuses.indexOf(uniqueStatus) + 1;
}
}
功能测试(数字){
数字=数字。拆分(“”);
var奇偶校验=数字。shift()%2;
对于(var i=0;i,您的代码过于复杂
因为第一个数字决定了你要找的是偶数还是奇数,所以要分别计算。然后,找到与之不匹配的第一个数字
function iqTest(numbers) {
numbers = numbers.split(" ");
var parity = numbers.shift() % 2;
for( var i=0; i<numbers.length; i++) {
if( numbers[i] % 2 != parity) {
return i+2; // 1-based, but we've also skipped the first
}
}
return 0; // no number broke the pattern
}
function iqTest(numbers){
// ...
const numArr = numbers.split(' ');
const checkStatus = num => (parseInt(num) % 2) ? 'odd' : 'even';
const findUniqueStatus = array => {
let numEvens = 0;
array.forEach(function(value){
if (checkStatus(value) == 'even') { numEvens++; }
});
return (numEvens === 1) ? 'even' : 'odd'
}
let statuses = numArr.map(checkStatus),
uniqueStatus = findUniqueStatus(numArr);
return statuses.indexOf(uniqueStatus) + 1;
}
}
功能测试(数字){
数字=数字。拆分(“”);
var奇偶校验=数字。shift()%2;
对于(var i=0;i而言,最简单的方法是收集子阵列中的所有偶数/奇数位置,并检查哪个阵列的末尾长度为1:
功能测试(数字){
数字=数字。拆分(“”);
var头寸=[],[];
对于(变量i=0;i console.log(iqTest(“13 2”))
最简单的方法是收集子阵列中的所有偶数/奇数位置,并检查哪个阵列的末尾长度为1:
功能测试(数字){
数字=数字。拆分(“”);
var头寸=[],[];
对于(变量i=0;i log(iqTest(“13 2”))
由于第一个数字决定了您要查找的是偶数还是奇数,请分别计算它。
然后,找到第一个不匹配的数字
function iqTest(numbers) {
numbers = numbers.split(" ");
var parity = numbers.shift() % 2;
for( var i=0; i<numbers.length; i++) {
if( numbers[i] % 2 != parity) {
return i+2; // 1-based, but we've also skipped the first
}
}
return 0; // no number broke the pattern
}
function iqTest(numbers){
// ...
const numArr = numbers.split(' ');
const checkStatus = num => (parseInt(num) % 2) ? 'odd' : 'even';
const findUniqueStatus = array => {
let numEvens = 0;
array.forEach(function(value){
if (checkStatus(value) == 'even') { numEvens++; }
});
return (numEvens === 1) ? 'even' : 'odd'
}
let statuses = numArr.map(checkStatus),
uniqueStatus = findUniqueStatus(numArr);
return statuses.indexOf(uniqueStatus) + 1;
}
}
因为第一个数字决定了你要找的是偶数还是奇数,所以要分别计算。
然后,找到第一个不匹配的数字
function iqTest(numbers) {
numbers = numbers.split(" ");
var parity = numbers.shift() % 2;
for( var i=0; i<numbers.length; i++) {
if( numbers[i] % 2 != parity) {
return i+2; // 1-based, but we've also skipped the first
}
}
return 0; // no number broke the pattern
}
function iqTest(numbers){
// ...
const numArr = numbers.split(' ');
const checkStatus = num => (parseInt(num) % 2) ? 'odd' : 'even';
const findUniqueStatus = array => {
let numEvens = 0;
array.forEach(function(value){
if (checkStatus(value) == 'even') { numEvens++; }
});
return (numEvens === 1) ? 'even' : 'odd'
}
let statuses = numArr.map(checkStatus),
uniqueStatus = findUniqueStatus(numArr);
return statuses.indexOf(uniqueStatus) + 1;
}
}
请在所有的测试中添加所需的结果。在实现这样的算法之前,考虑使用TDD。它将允许您为给定的输入定义精确的期望,例如“代码> IT”(“应该返回-空字符串1”,()= {期望(IQTEST(“”))。to。
明确定义了如果输入为空,算法需要输出什么。您编写的代码满足此条件,并且在继续修改时,始终确保所有以前编写的测试都通过。这通常会生成干净且不易出现错误的代码。请为所有测试添加所需的结果。未来提示:在执行之前像这样的算法,考虑使用TDD,它可以让你定义精确的Expe。