js 对数组对象进行 *** 作?

js 对数组对象进行 *** 作?,第1张

var arr=[{name: 'cst', age: '18'}, {name: 'jc', age: '20'}, {name: 'dxm', age: '50'} , {name: 'dcg', age: '30'}];
let brr=arrfilter(n => {
return nnameindexOf('c')>-1;
})map(a => {
aage=(Number(aage)+1)toString();
return a;
});
consolelog(brr);

具体代码如下所示:

1、<script>   //----------------for用来遍历数组对象

2、 var i,myArr = [1,2,3];   for (var i = 0; i < myArrlength; i++) {    consolelog(i+":"+myArr[i]);   };

3、 //---------for-in 用来遍历非数组对象   var man ={hands:2,legs:2,heads:1};   //为所有的对象添加clone方法,即给内置原型(object,Array,function)增加原型属性,该方法很强大,也很危险   if(typeof Objectprototypeclone ==="undefined"){    Objectprototypeclone = function(){};    } ;

4、  //   for(var i in man){    if (manhasOwnProperty(i)) { //filter,只输出man的私有属性     consolelog(i,":",man[i]);    };   }  ;

5、//输出结果为print hands:2,legs:2,heads:1   for(var i in man) {//不使用过滤    consolelog(i,":",man[i]);   }   ;

6、 //输出结果为://hands : 2 indexhtml:20   //legs : 2 indexhtml:20   //heads : 1 indexhtml:20   //clone : function ;

7、for(var i in man) {    if(ObjectprototypehasOwnPropertycall(man,i)) { //过滤     consolelog(i,":",man[i]);    }   };

8、 //输出结果为print hands:2,legs:2,heads:1 </script>    。

javaScript遍历对象总结:

1、

2、

我有一个想法就是首先遍历该集合,然后将id替换成有序的索引

for(var i = 0 ,i<listlength ,i++){

list[i]id=i;

}

通过该id的索引可以很方便的找出数组中对应的变量,

list[对象id]

这样做适合于大量数据查找对应属性的 *** 作,只需要遍历一遍,后续的所有查找动作都可以通过索引直接完成。

经过本人测试

find方法比直接遍历慢十倍,比直接通过索引查询慢一百倍,

综上,还不如直接用遍历来的快些!

测试代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoobcom)</title>
</head>
<body>
<p>点击按钮返回符合大于输入框中指定数字的数组元素。</p>
<p>最小年龄: <input type="number" id="ageToCheck" value="18"></p>
<button onclick="myFunction()">find方法点我</button>
<button onclick="Fun()">遍历方法点我</button>
<button onclick="FunIndex()">直接找的方法</button>
<p>值: <span id="demo"></span></p>
<p><strong>注意:</strong> IE 11 及更早版本不支持 findIndex() 方法。</p>
<script>
//测试结果很现实,遍历比find要快太多
var ages = [];
for(var i =0 ;i<1000000;i++){
agespush(i);
}
function checkAdult(age) {
return age == documentgetElementById("ageToCheck")value;
}
function myFunction() {
var start = new Date()getTime();
documentgetElementById("demo")innerHTML = agesfind(checkAdult);
consolelog("find查找耗时 :" +(new Date()getTime()-start))
}
function Fun() {
var start = new Date()getTime();
var value = documentgetElementById("ageToCheck")value;
for(var i =0 ; i<ageslength ;i++){
if(i==value){
documentgetElementById("demo")innerHTML =i;
consolelog("直接遍历耗时 :" +(new Date()getTime()-start));
return;
}
}
}
function FunIndex(){
var start = new Date()getTime();
documentgetElementById("demo")innerHTML =ages[documentgetElementById("ageToCheck")value]
consolelog("数组索引查找耗时 :"+(new Date()getTime()-start));
}
</script>
</body>
</html>

测试结果如下:

function myFilter(arr1,arr2) {
    return  arr1filter((ele) => 
        arr2filter((x) => xid === eleid)length > 0
    );
}

在 chrome 浏览器下测试可行。

答案里为了简洁,使用了箭头函数。主要思路就是利用 Array 的 filter 函数。

该函数接受一个回掉函数作为参数,就是如何过滤想要的内容,满足条件的返回为true。

它并不要求b里的id都在a里,只要是共有的id都会选中。

如果是b里的id 都在a里的话,可以尝试这个方法。

function myFilter2(arr1,arr2) {
    var ret = [];
    arr2forEach(
        ele => {
            var findEle = arr1find(x => xid === eleid );
            // 如果在arr1中找到,添加到arr1中
            findEle  retpush(findEle) : '';
        }
    );
    return ret;
}

这个思路是把b中的每一个id都在a中找一下。

var html='';
for (var i = 0; i < arrlength; i++) {

var list=arr[i]
html+='<ul>';

html+='<li> name:'+listname+'</li>'

html+='<li> sex:'+listsex+'</li>'
html+='</ul>';
}
documentgetElementsByTagName('body')[0]innerHTML=html;
这样的数据结构用法不算难,只是一维数组,不用两次遍历,再用对象的属性时没必要再遍历了,直接取其中的属性就Ok了
代码运行一遍 相信你能看懂的

如果对于一个已知的对象来说,是没什么区别的,如果我们需要的对象的key是变量,就需要第二种取值的方式。

我们文章开始例子中的对象是:

如果目标数组只是为了得到对象的key的集合或者value的集合还是相对容易的

如果像我文中开始的需求的话就只需要改变一下push进去的内容为一个对象即可


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13393548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存