本文目录一览:
- 1、js代码,任意输出一个字符串,将这个字符串按照从头到尾的顺序输出到页面,每秒输出一个字,
- 2、js代码执行顺序的问题
- 3、js 如何遍历对象的属性名,而且按照顺序输出
- 4、js能够保证object属性的输出顺序吗
- 5、C语言的编程题用js怎么写:输入三个整数,按从大到小的顺序输出
js代码,任意输出一个字符串,将这个字符串按照从头到尾的顺序输出到页面,每秒输出一个字,
script type="text/javascript"
function change() {
var str1 = document.getElementById("str1").value;
var str2 = "";
for (var i = 0; i str1.length; i++) {
str2 += str1.charAt(str1.length - i) + "#";
}
document.getElementById("str2").value = (str2 + str1.charAt(0)).replace("#","");
}
/script
/head
body
输入字符串:input type="text" id="str1" /br /
转换后字符串:input type="text" id="str2" /br /
input type="button" value="转换" onclick="change();" /
/body
/html
js代码执行顺序的问题
JS变量提升问题,顾名思义,就是把下面的东西提到上面。具体资料可以百度搜索,
var t = 1;
function con(){
console.log(t);//在函数内部,有变量提升
var t = 2;
console.log(t);
}
con();
变为如下:
var t = 1;
function con(){
var t;
console.log(t);//在函数内部,有变量提升
t = 2;
console.log(t);
}
con();
如果想要改变t变量的值,那么在函数内部就不要定义x变量
var t = 1;
function con(){
console.log(t);//1
t = 2;
console.log(t);//2
}
con();
js 如何遍历对象的属性名,而且按照顺序输出
主要有三种方式,for...in 、Object.keys(obj)、Object.getOwnPropertyNames(obj):
!DOCTYPE html
html
head
meta charset="UTF-8"
title遍历对象的几种方式/title
/head
body
/body
script
const obj = {
a:1,
b:true,
c:"hello"
}
//方式1:for in方式
for(let key in obj){
console.log(key)
}
//Object.keys 方式 直接返回一个数组
console.log(Object.keys(obj))
console.log(Object.getOwnPropertyNames(obj))
/script
/html
如果想要了解他们具体的区别的话,可以看下这篇博客JS中三种主要的遍历对象的方法:for in、Object.
js能够保证object属性的输出顺序吗
一、奇怪现象
我们来看这样一个对象,来输出他的属性名称,也就是key值:
var data = {'1':'aaa','2':'bbb','3':'ccc','测试':'000'};
Object.keys(data) ;
控制台输出:
["1", "2", "3", "测试"]
嗯,没啥问题。那调整一下最后一项的位置,再来试试:
var data = {'测试':'000','1':'aaa','2':'bbb','3':'ccc'};
Object.keys(data);
控制台输出:
["1", "2", "3", "测试"]
奇怪,输出的顺序被调整了,这是为什么呢?我们继续,换一下属性名称,再试一次:
var data = {'a':'000','1':'aaa','2':'bbb','3':'ccc'};
Object.keys(data);
控制台输出:
["1", "2", "3", "a"]
依结果来看,貌似有点小规律,我们不妨猜一下。
二、大胆猜测
我们来看结果:
["1", "2", "3", "测试"]
["1", "2", "3", "a"]
会不会是按照ASC码的大小顺序来输出的呢?
'1''2''3''测试'
'1''2''3''a'
好像漏掉了一种情况(字母和汉字的属性名称同时存在),我们试一下:
var data = {'a':'000','3':'ccc','1':'aaa','测试':'bbb',};
Object.keys(data);
控制台输出:
["1", "3", "a", "测试"]
调整属性’a’和’测试’的顺序呢?
var data = {'测试':'bbb','3':'ccc','a':'000','1':'aaa'};
Object.keys(data);
控制台输出:
["1", "3", "测试", "a"]
好了,到此为止,我们可以得出结论了。
结论:对象的遍历输出并不是按照属性的ASC码升序排序的。
三、初见端倪
查阅了一些文档后,得出了以下有效结论:
1.An object is a member of the type Object. It is an unordered collection of properties each of which contains a primitive value, object, or function. A function stored in a property of an object is called a method.
2.Chrome Opera 的 JavaScript 解析引擎遵循的是新版 ECMA-262 第五版规范。因此,使用 for-in 语句遍历对象属性时遍历书序并非属性构建顺序。而 IE6 IE7 IE8 Firefox Safari 的 JavaScript 解析引擎遵循的是较老的 ECMA-262 第三版规范,属性遍历顺序由属性构建的顺序决定。
四、真相大白
Chrome Opera 中使用 for-in 语句遍历对象属性时会遵循一个规律:
它们会先提取所有 key 的 parseFloat 值为非负整数的属性,然后根据数字顺序对属性排序首先遍历出来,然后按照对象定义的顺序遍历余下的所有属性。
其它浏览器则完全按照对象定义的顺序遍历属性。
这和我们上面例子中的数据结果是吻合的,嗯,这就是我想要的结果!
五、结案总结
如果想顺序遍历一组数据,请使用数组并使用 for 语句遍历。
for-in语句无法保证遍历顺序,应尽量避免编写依赖对象属性顺序的代码。如果想按照定义的次序遍历对象属性,请参考 这里 针对各浏览器编写特殊代码。
由于对象的输出是无序的,但是数组却是有序的,所以为了保证顺序,搞成数组再输出。嗯,就是这样!
C语言的编程题用js怎么写:输入三个整数,按从大到小的顺序输出
参考代码:
#include "stdio.h"
int main()
{
int x,y,z,max,min;
scanf("%d%d%d",x,y,z);
if(xy){
max=x;
min=y;
}
if(zmax) max=z;
if(minz) min=z;
y=x+y+z-max-min;
x=max;
z=min;
printf("从大到小排序:%d %d %d\n",x,y,z);
}
/*
运行结果:
3 1 2
从大到小排序:3 2 1
*/
扩展资料
利用指针变量,用函数实现将3个整数按从大到小的顺序输出。
解:程序:
#includestdio.h
void swap(int *ptr1, int *ptr2)
{
int temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
}
void exchange(int *q1, int *q2,int *q3)
{
void swap(int *ptr1, int *ptr2);
if (*q1 *q2)
{
swap(q1, q2);
}
if (*q1 *q3)
{
swap(q1, q3);
}
if (*q2 *q3)
{
swap(q2, q3);
}
}
int main()
{
void exchange(int *q1, int *q2, int *q3);
int *p1, *p2, *p3, a, b,c;
printf("please enter three integer numbers:");
scanf("%d,%d,%d",a,b,c);
p1 = a;
p2 = b;
p3 = c;
exchange(p1, p2, p3);
printf("The order is:%d,%d,%d\n",a,b,c);
return 0;
}
结果:
please enter three integer numbers:7,-9,666
The order is:666,7,-9
请按任意键继续. . .