使用对象的值来确定输出 - Javascript

时间:2017-05-03 08:43:40

标签: javascript object

我有一个对象:

var visits = {
  'Mike': {
    visits: 1
  },
  'Roland': {
    visits: 2
  },
  'Chiks': {
    visits: 3
  },
  'Rols': {
    visits: 4
  }
};

基本上,这是每个名字的对象列表及其访问次数。

如果迈克已经设置了1次访问的功能,它将是console.log(' One')

示例:

var result = hi('Mike');
console.log(result); => 'One'

如果Roland设置了2次访问的功能,它将是console.log(' two')

6 个答案:

答案 0 :(得分:2)

尝试使用Object.keys()Array#includes方法.i添加了num数组,用于显示结果字符串 eg:three 而不是{{1 } .created integer数组最多num。更好地使用five中的值而不是对象内的string。喜欢

integer

'Mike': {
    visits: 'one'
        },

答案 1 :(得分:0)

试试这个:

var visits = {
  'Mike': {
    visits: 1
  },
  'Roland': {
    visits: 2
  },
  'Chiks': {
    visits: 3
  },
  'Rols': {
    visits: 4
  }
};

function hi(firstName) {
  var msg = 'Welcome ' + firstName;

  var person = visits[firstName]
  if (person && person.visits) {
    switch (person.visits) {
      case 1:
        msg = "One";
        break;
      case 2:
        msg = "Two";
        break;
      default:
        msg = "Three";
        break
    }
  }
  console.log(msg)
  return msg
}

hi('Mike')
hi('Rols')
hi('Roland')
hi('New person')

答案 2 :(得分:0)

循环浏览您的对象并进行比较。此代码打印数字最多为9 [1-9]。



var visits = {
  'Mike': {
    visits: 1
  },
  'Roland': {
    visits: 2
  },
  'Chiks': {
    visits: 3
  },
  'Rols': {
    visits: 4
  }
};

var digits={
	1:'one',
	2:'two',
	3:'three',
	4:'four',
	5:'five',
	6:'six',
	7:'seven',
	8:'eight',
	9:'nine'
};

function getDigit(digit){
	return digits[digit];
}

function hi(firstName){
	if(typeof visits[firstName]!='undefined' && visits[firstName]['visits']!='' && typeof visits[firstName]['visits']!='undefined'){
	    console.log(getDigit(visits[firstName]['visits']));
	}else{
	    console.log('welcome');
	}
}


hi('Rols');
hi('Roland');
hi('ge');




工作JsFiddle

答案 3 :(得分:0)

在这里,我按照您的预期获得了打印的通用解决方案。请查看此Working example中的解决方案。

您可以将对象访问扩展到包含其他值的任何数字(例如我添加了#Pon;')。 {       ' Mike':{         访问次数:1       },       '罗兰':{         访问次数:2       },       ' Chiks':{         访问量:3       },       ' Rols':{         访问次数:4       },       ' Ponc':{         访问次数:5       } .......     };

<!DOCTYPE html>
<html>
<body>

<label for='numinput'>Number To Display :</label>
<input type='text' id='numinput' name='numinput'></input>
<div id='output'></div>

<script>
function numToWords(number) {

    //Validates the number input and makes it a string
    if (typeof number === 'string') {
        number = parseInt(number, 10);
    }
    if (typeof number === 'number' && isFinite(number)) {
        number = number.toString(10);
    } else {
        return 'This is not a valid number';
    }

    //Creates an array with the number's digits and
    //adds the necessary amount of 0 to make it fully 
    //divisible by 3
    var digits = number.split('');
    while (digits.length % 3 !== 0) {
        digits.unshift('0');
    }


    //Groups the digits in groups of three
    var digitsGroup = [];
    var numberOfGroups = digits.length / 3;
    for (var i = 0; i < numberOfGroups; i++) {
        digitsGroup[i] = digits.splice(0, 3);
    }
    console.log(digitsGroup); //debug

    //Change the group's numerical values to text
    var digitsGroupLen = digitsGroup.length;
    var numTxt = [
        [null, 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'], //hundreds
        [null, 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'], //tens
        [null, 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] //ones
        ];
    var tenthsDifferent = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'];

    // j maps the groups in the digitsGroup
    // k maps the element's position in the group to the numTxt equivalent
    // k values: 0 = hundreds, 1 = tens, 2 = ones
    for (var j = 0; j < digitsGroupLen; j++) {
        for (var k = 0; k < 3; k++) {
            var currentValue = digitsGroup[j][k];
            digitsGroup[j][k] = numTxt[k][currentValue];
            if (k === 0 && currentValue !== '0') { // !==0 avoids creating a string "null hundred"
                digitsGroup[j][k] += ' hundred ';
            } else if (k === 1 && currentValue === '1') { //Changes the value in the tens place and erases the value in the ones place
                digitsGroup[j][k] = tenthsDifferent[digitsGroup[j][2]];
                digitsGroup[j][2] = 0; //Sets to null. Because it sets the next k to be evaluated, setting this to null doesn't work.
            }
        }
    }

    console.log(digitsGroup); //debug

    //Adds '-' for gramar, cleans all null values, joins the group's elements into a string
    for (var l = 0; l < digitsGroupLen; l++) {
        if (digitsGroup[l][1] && digitsGroup[l][2]) {
            digitsGroup[l][1] += '-';
        }
        digitsGroup[l].filter(function (e) {return e !== null});
        digitsGroup[l] = digitsGroup[l].join('');
    }

    console.log(digitsGroup); //debug

    //Adds thousand, millions, billion and etc to the respective string.
    var posfix = [null, 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion'];
    if (digitsGroupLen > 1) {
        var posfixRange = posfix.splice(0, digitsGroupLen).reverse();
        for (var m = 0; m < digitsGroupLen - 1; m++) { //'-1' prevents adding a null posfix to the last group
            if (digitsGroup[m]) {
                digitsGroup[m] += ' ' + posfixRange[m];
            }
        }
    }

    console.log(digitsGroup); //debug

    //Joins all the string into one and returns it
    return digitsGroup.join(' ');

} //End of numToWords function
var visits = {
  'Mike': {
    visits: 1
  },
  'Roland': {
    visits: 2
  },
  'Chiks': {
    visits: 3
  },
  'Rols': {
    visits: 4
  }
};
function hi() {
        var hold = 'No value';
    var inputValue = input.value;
    console.log(inputValue);
    console.log(visits[inputValue]);
    hold = numToWords(visits[inputValue].visits);
    output.innerHTML = hold;
}
var button = document.getElementById('changeText');
var output = document.getElementById('output');
var input = document.getElementById('numinput');


input.addEventListener('input', hi);
</script>

</body>
</html>

答案 4 :(得分:-1)

var visits = {
  'Mike': {
    visits: 1
  },
  'Roland': {
    visits: 2
  },
  'Chiks': {
    visits: 3
  },
  'Rols': {
    visits: 4
  }
};

function hi(firstName){
//if the name doesn't exist it will give an error, so better make a check
  if(visits[firstName]!=null){
    var numberOfVisits=visits[firstName].visits; //this is the number of the visits for a given name
    //then you can use a switch or whatever you want to show your message
    var words=['Zero', 'One', 'Two', 'Three', 'Four'];
    return words[numberOfVisits];
  }
}

var rolsResult=hi('Rols');
console.log(rolsResult);

答案 5 :(得分:-1)

你可以这样做:
1.检查对象中是否存在密钥,如果是,则将值转换为等效的文本,例如从1到one
2.如果没有,请返回&#39;欢迎&#39;。

&#13;
&#13;
var visits = {
  'Mike': {
    visits: 1
  },
  'Roland': {
    visits: 2
  },
  'Chiks': {
    visits: 3
  },
  'Rols': {
    visits: 4
  }
};

var arr = ['one', 'two', 'three', 'four'];

function hi(name) {
  var v = visits[name];
  return v ? arr[(v.visits)-1]: 'Welcome';
}

console.log(hi('Mike'));
&#13;
&#13;
&#13;