我有一个对象:
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')
答案 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;。
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;