草庐IT

可变数组

全部标签

javascript - 从 JS 中的不可变数组中删除元素的最干净方法是什么?

这个问题在这里已经有了答案:Isthisthecorrectwaytodeleteanitemusingredux?(6个答案)关闭5年前。我需要从数组中删除一个处于React组件状态的元素。这意味着它是一个不可变对象(immutable对象)。使用扩展语法很容易添加元素。return{...state,locations:[...state.locations,{}]};删除有点棘手。我需要使用中间对象。varl=[...state.locations]l.splice(index,1)return{...state,locations:l}它使代码更脏,更难理解。创建一个新数组并从

javascript - 如何简化嵌套对象到对象数组的转换?

这是我的嵌套对象vararr=[{"children":[{"children":[{"children":[],"Id":1,"Name":"A","Image":"http://imgUrl"}],"Id":2"Name":"B","Image":"http://imgUrl"}],"Id":3,"Name":"C","Image":"http://imgUrl"}]我想把上面的转换成下面的格式[{"Name":"C","Id":3,"Image":"http://imgUrl"},{"Name":"B","Id":2,"Image":"http://imgUrl"},{"Name

javascript - 获得最高数组值的其他方法

我是JavaScript的新手,我正在努力了解ES6语法,尤其是if语句。我可以创建简单的ES6函数,例如:functiontest(a,c){returna+c;}[3,8,-4,3].reduce(test);但是,如果我想添加一个if语句,我无法使用ES6语法-例如:functionmaxValue(a,c){if(c>=a){a==c}}[3,8,-4,3].reduce(maxValue);我知道我可以使用Math方法通过以下方式获得结果:vararray=[267,306,108];varlargest=Math.max.apply(Math,array);//return

javascript - 使用 indexOf 方法在二维数组中查找值

我想问一个关于JavaScript中的二维数组的问题,类似于:vararray=[[2,45],[3,56],[5,67],[8,98],[6,89],[9,89],[5,67]]也就是说,在每个索引上,我都有一个数组。假设我的第二个索引中有一个值,如56,我想要相应的第一个索引(即上例中的3)。我可以使用循环来完成(如果没有其他选择),但是有没有更好的方法?此外,我知道JavaScript中的indexOf方法,但是当我这样调用它时它不会返回索引:array.indexOf(56);任何见解都会有所帮助。 最佳答案 使用一些迭代器

javascript - 你如何在Javascript中的对象数组中找到属性的最小值和最大值

我有以下javascript对象:Person1.Name="John";Person1.Age=12;Person2.Name="Joe";Person2.Age=5;然后我有一组人,我如何根据一个人的年龄找到最小值/最大值?Javascript或Jquery中的任何解决方案都是可以接受的。非常感谢您的帮助。 最佳答案 假设您的数组如下所示:varpersons=[{Name:"John",Age:12},{Name:"Joe",Age:5}];然后你可以:varmin=Math.min.apply(null,persons.ma

javascript - 选择小于数组中变量的最大数字

我有一个JavaScript数组和一个这样的变量;vara=[0,1200,3260,9430,13220],b=4500;选择数组中仍然小于或等于变量的最大值的最聪明方法是什么?在此示例中,我需要选择3260。我可以做这样的事情;$.each(a,function(i){if(a[i]b){varc=a[i];returnfalse;}});但我认为如果选定的数组值是最后一个,那可能行不通。更不用说,对我来说,它看起来像是一些相当简单的代码。是否有更聪明/更简洁的方式来实现我所追求的目标?(是的,我知道我不应该为此使用jQuery循环,但我在输入示例时很懒惰)

javascript - 从多维数组中删除重复的元素对

我有一个如下所示的数组:1.coordinates=[[16.343345,35.123523],2.[14.325423,34.632723],3.[15.231512,35.426914],4.[16.343345,35.123523],5.[15.231512,32.426914]]第5行的纬度与第3行相同,但它们的经度不同,因此不重复。第3行和第6行的纬度和经度相同,因此是重复的,应该删除一个。 最佳答案 这个问题的难点在于不同的数组永远不会比较相等,即使它们包含相同的值。因此直接比较方法,如indexOf将不起作用。以下模

javascript - 如何在javascript中查找x是否等于数组中的任何值

这个问题在这里已经有了答案:HowdoIcheckifanarrayincludesavalueinJavaScript?(60个答案)关闭6年前。我目前有这样一个if语句:if(x==a||x==b||x==c||x==d||x==e){alert('HelloWorld!')};我该如何测试x是否等于数组中的任何值,例如[a,b,c,d,e]?谢谢!

javascript - Mocha/Chai 测试预期与实际对象数组

当两者都是对象数组时,断言预期结果与实际结果相匹配的最佳方法是什么?我的直接想法是使用Array原型(prototype)过滤器并检查交集是否与预期的大小相同,即:describe('select',function(){it("shouldreturnselectedcolumns",function(done){varquery="selectlunchTime,name";varactual=...resultsofthequery,anarrayofanonymousobjects...//expectedresultsvarexpected=[{"lunchTime":"12

javascript - 使用 lodash 合并数组的对象

我正在尝试使用lodash将所有对象合并在一起,我尝试了_.assign和_.merge仍然单独显示对象。vararr=[{"asf":33,"ff1":12},{"xx":90,"ff2":13},{"xw":66,"ff3":176}]console.log(_.assign({},arr));//shouldshow{"asf":33,"ff1":12,"xx":90,"ff2":13,"xw":66,"ff3":176}http://jsfiddle.net/ymppagdq/ 最佳答案 这是你可以做到的:_.assign.