在学习<JavaScript权威指南>第六版的第7.1节中通过数组直接量创建数组时,我们可以不给数组的某个元素赋值,它就会使undefined.虽然是undefined,但我们调用数组对象的length属性时undefined也会导致length加1.有如下所示的四种情况: 1 var undef0 = [,,]; 2 var undef1 = [1,,]; 3 var undef2 = [,1,]; 4 var undef3 = [,,1]; 5 6 console.log(undef0.l…
JavaScript中的常用的数组操作方法 一.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2,3]; var arr2 = [4,5]; var arr3 = arr1.concat(arr2); console.log(arr1); //[1, 2, 3] console.log(arr3); //[1, 2, 3, 4, 5] 二.join() join() 方法用于把数组中的所有元素…
JavaScript中随机打乱一个数组 function shuffle(arr) { let i = arr.length; while (i) { let j = Math.floor(Math.random() * i--); [arr[j], arr[i]] = [arr[i], arr[j]]; } } let arr = [1, 2, 3, 4, 5, 6, 7] shuffle(arr) console.log(arr)…
Question:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字 package com.study.zhipengs.test; import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. * 例如输入一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, * 2}.由于数字2在数组中出现了5次,超过数组长度…
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换.排序.合并.迭代等等基本操作. 原文:http://www.cnblogs.com/kelsen/p/4850274.html 创建数组和数组检测 1.使用Array构造函数 创建数组. //创建一个空数组 var cars = new Array(); //创建一个指定长度的数组 var car…
原创博文,转载请注明出处! # 题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如果不存在则输出0. 举例:输入一个长度为9的数组{1,2,3,2,2,2,5,4,2},由于数字2在数组中出现了5次,超过数组长度一半,因此输出2. # 思路 解法一:允许修改输入的数组,时间复杂度为O(n) 解法二:不允许修改输入的数组,时间复杂度为O(n) 原理:…
这一块实际上已经学过了,因为没有学好,在工作过程中遇到一些对象或者数组的操作,会去百度查找,浪费了许多宝贵的时间,所以特地再拐过头来重新学习. 对象 基本概念: 对象这种基本的数据结构还有其他很多种叫法:散列(hash).散列表(hashtable).字典(directory),关联数组(associative). JavaScript对象是动态的——可以新增属性也可以删除属性.但是通常模拟静态对象以及静态语言中的结构体. 除了数字.字符串.true/false null 和undefined…
题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如果不存在则输出0. 解析: 看到这道题我首先想到先给数组排序,在遍历一遍查找已经排好序的数组中的符合题意的数.这种方法是可行的,但是这种方法太明显了,而且排序时间复杂度大于O(n),感觉面试官肯定不会同意.于是我想到了用第i个数与i+1个数进行比较,如果相同则记下此数并且计数器加一,不同就减一,当计…
我们知道一些第三方的js库对如何快速选取html中的元素做了一些简化,貌似十分高深莫测,其实也不然.而且js本身自带了对于特殊元素的简便选取的方法,下面就为大家简单介绍下. 在html中,一般最直接的辨别html元素使用的是name和id属性,两者有着细微的不同:id必须页面唯一,但name可以有重复. 在js中如果id名称不和内置属性或全局变量重名的话,该名称自动成为window对象的属性,而在一个html页面中的最顶层环境中有: this === window 所以如果我们写一个如下的htm…
如果你没有注意过这个问题,那么这个标题应该会让你感到困惑,判断数据类型这么基础的问题能有什么坑呢? 少年,你不能太天真了,我们朝夕面对的这门语言,可是JavaScript呀,任何你觉得已经习以为常的东西都可能瞬间转化成一个大坑,令人百思不得其解. 但是正是因为同样的原因,我们可以在学习和使用JavaScript这门语言的时候提出和讨论一些这门语言独有的,十分有趣的问题.比如我们今天要讨论的,在JavaScript当中如何判断一个数组是数组. JavaScript有五种方法可以确定一个值到底是什么…
一:查找元素在数组中的位置 jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值.如果数组中不存在该值,则返回 -1. jQuery.inArray( value, array [, fromIndex ] ) 此方法也可以用来判断数组中是否存在某个元素.之前一直用的方法都是arr.indexOf(). 二:添加删除数组中元素 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. 注释:该方法会改变原始数组. PS:slice()的用法: 三 .多个数…
一个数组,根据数组中某个元素,合并数组 // 需要被合并的数组,把Index相同的数组合并 const arr = [{id:0,name:'张三'}, {id:0,name:'李四'}, {id:1,name:'王五'}, {id:1,name:'张伟'}, {id:2,name:'张江'}, ] var map = {}, result = []; for(var i = 0; i < arr.length; i++){ var ai = arr[i]; if(!map[ai.id]){ r…
概要 这是一篇记录文,记录数组操作对象去重的实现. 需求 有这样一个数组 [{ _id: 123, name: '张三' },{ _id: 124, name: '李四' },{ _id: 123, name: '张三' }] 实际上我们只需要 [{ _id: 123, name: '张三' },{ _id: 124, name: '李四' }] 去重 简单数组的去重 Array.from(new Set([1,1,2,3,4,4])) // [1,2,3,4] 以对象为元素的数组去重 和数组相…
在vue中使用v-if判断数组的长度时出现报错 <el-collapse-item :key="index" v-if="data.childrens.length > 0" :title="data.fname" :name="data.fname"> <el-row> <el-col :md="24" :lg="12" :xl="8&qu…
前言 关于什么是js的类数组对象这里不再赘述.可以参考这个链接,还有这里. js中类数组对象很多,概念简单的讲就是看上去像数组,又不是数组,可以使用数字下标方式访问又没有数组方法. 例: arguments , NodeList , HTMLCollection , jQuery 等 类数组对象特性 1.拥有 length 属性 var a=document.getElementsByTagName("div"); a.__proto__;// HTMLCollection {} 属于…
有些时候,我们需要知道一个字符串中字符的位置,或者一个数组中元素的位置,这是就需要对该变量进行迭代操作. 对于数组,有两个方法indexOf和findIndex() , 需要注意的是,findIndex是数组的方法,不适用于字符串 let arr = ['a' ,'b', 'c'] let idx = arr.findIndex((item) => { return item == 'b' }) console.log(arr.indexOf('c')); console.log(idx) 对于…
怎样判断一个JavaScript变量是array还是obiect? 答案: 1.如果你只是用typeof来检查该变量,不论是array还是object,都将返回‘objec'. 此问题的一个可行的答案是是检查该变量是不是object,并且检查该变量是否有数字长度(当为空array时长度也可能为0). 然而,参数对象[arguments object](传给制定函数的所有参数),也可能会适用于上述方法,技术上来说,参数对象并不是一个array. 此外,当一个对象有a.length属性的时候,这个方…
var BaiduUsers = []; var UserArray = function(name, phone, id, id2) { this.name = name; this.phone = phone; this.id = id; this.id2 = id2; }; UserArray.add = function(name, phone, id, id2) { return new UserArray(name, phone, id, id2); }; BaiduUsers.pu…
Javascript获取获取屏幕.浏览器窗口 ,浏览器,网页高度.宽度的大小 屏幕可用工作区宽度:window.screen.availHeight,和浏览器无关,屏幕相关屏幕可用工作区高度:window.screen.availWidth,和浏览器无关,屏幕相关网页可见区域宽:document.body.clientWidth ,html中body可视区域的宽clientWidth = width+padding,不包括滚动条,缩放后跟着变网页可见区域高:document.body.clien…
要创建一个二位数组我们脑子里第一个出现的就是 var arr=[][]; 但是在javascript这样是会报错的,要在javascrip中创建一个二位数组对象方法如下 方法一     直接把数组写出来例如 var c = [[ ],[ ],[ ]] 方法二   利用循环创建的方法   var c=new Array( );  for (var k = 0; k<4;k++){        c[i]=new Array( );  }…
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> //声明一维数组 var myarr = new Array(); for (var i = 0; i < 3; i++) { //确定一维数组的长度. myar…
在实际开发中,很多时候需要知道某个节点是不是另一个节点的后代.很多浏览器提供了contains方法,如: console.log(document.documentElement.contains(document.body));//输入ture DOM3提供的compareDocumentPosition方法也可以判断元素位置关系,结果如下: 1 无关 2 居前 4 居后 8 包含 16 被包含 因此跨浏览器的contains写法如下: function contains(refNode,ot…
今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下: 1.json类型的字符串转换为json对象及取值 var jsonString = '{"bar":"property","baz":3}'; var jsObject = JSON.parse(jsonString); //转换为json对象 alert(jsObject.bar); //取json中的值 2.json对象转为json类型的字符串 var jso…
<div id="test"> <strong>i'm strong</strong> </div> 1.elementNode.innerHTML 返回的值是<strong>i'm strong</strong> 2.elementNode.innerText 返回的值是i'm strong 3.elementNode.textContent 返回的值是i'm strong 4.elementNode.child…
答案: 伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们.典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组.可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象.…
这里把符合以下条件的对象称为伪数组: 1.具有length属性 2.按索引方式存储数据 3.不具有数组的push.pop等方法 伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,不具有数组的push.pop等方法,但仍可以对真正数据遍历方法来遍历它们.典型的是函数document.childNodes之类的,它们返回的NodeList对象都属于伪数组. 可以使用以下函数将伪数组转化为真正的Array对象(兼容问题处理). function makeArray( c )…
var ev = document.createEvent('HTMLEvents'); //动态创建HTML事件 ev.initEvent('abort', false, true); //HTML绑定一个具体的事件类型 document.getElementById('img1').dispatchEvent(ev); //指定的元素发射创建的事件 涉及的方法 XML DOM createEvent() 方法 initEvent() 方法 XML DOM dispatchEvent() 方法…
var myData = new Array(); for(var i=0;i<tableDatas.length;i++){ var arr=tableDatas[i]; ...... /// myData[i]=new Array(); myData[i][0]=arr[2].toString(); myData[i][1]=parseFloat(arr[3]); } drawGraph(myData); 如上,采取是元素赋值的方式,push的做法用不通,如果你知道请留言.…
<script> //获取下一个兄弟元素 function getNextElement(element) { if (element.nextElementSibling) { return element.nextElementSibling; } else { var next = element.nextSibling;//下一个兄弟节点 while (next && next.nodeType !== 1) {//有 而且不是我们要的元素 next = next.ne…
第一.element.setAttribute('class','abc');  第二.element.setAttribute('className', 'abc') : 第三.element.className = 'abc'; …