Tag: 数组

为什么对象不能在JavaScript中进行迭代?

为什么对象默认不能迭代? 我总是看到与迭代对象有关的问题,常见的解决scheme是迭代对象的属性,并以这种方式访问​​对象内的值。 这似乎很常见,这使我想知道为什么对象本身不可迭代。 像ES6 for…of这样的语句默认使用对象。 因为这些特性只适用于不包含{}对象的特殊“可迭代对象”,所以我们必须经过这些循环才能使这个对象成为我们想要使用的对象。 for …语句创build一个循环遍历可迭代对象 (包括Array,Map,Set,arguments object等)… 例如使用ES6 生成器function : var example = {a: {e: 'one', f: 'two'}, b: {g: 'three'}, c: {h: 'four', i: 'five'}}; function* entries(obj) { for (let key of Object.keys(obj)) { yield [key, obj[key]]; } } for (let [key, value] of entries(example)) { console.log(key); console.log(value); for (let [key, […]

拒绝指针的数组大小的macros

经常教授的标准数组大小的macros是 #define ARRAYSIZE(arr) (sizeof(arr) / sizeof(arr[0])) 或者一些等同的forms。 然而,当一个指针被传入时,这种事情默默地成功了,并且给出了在运行时似乎是合理的结果,直到事情神秘崩溃。 这太容易犯这个错误了:一个具有本地数组variables的函数被重构,将一些数组操作转移到一个新的函数中,并以该数组作为参数调用。 所以,问题是:是否有一个“卫生”的macros来检测C语言中的ARRAYSIZEmacros的滥用,最好在编译时? 在C ++中,我们只使用专门用于数组参数的模板; 在C中,似乎我们需要一些方法来区分数组和指针。 (如果我想拒绝数组,例如,我只是做例如(arr=arr, …)因为数组分配是非法的)。

不明白Arrays.copyOf的源代码

我无法理解Arrays.copyOf的源代码。 public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) { T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength); System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; } 这一行是什么检查? (Object)newType == (Object)Object[].class (T[]) new Object[newLength]和(T[]) Array.newInstance(newType.getComponentType(), newLength)之间有什么区别。 为什么Array.newInstance对两种情况都不够好? 下面这行代码编译,但在运行时崩溃(如预期的那样)。 我应该什么时候使用这种方法? Integer[] nums = Arrays.copyOf(new String[]{"a", "b"}, […]

文法语法对于使用hex表示法的byte 数组。

编译器似乎没问题(只有一位hex数值): byte[] rawbytes={0xa, 0x2, 0xf}; 但不是这样的: byte[] rawbytes={0xa, 0x2, 0xff}; 我得到一个“可能发生的精度损失:int required:byte”错误? 我在做什么错 – 或者是一位数的hex数是一个特例? Java 1.5.x.

为什么不是一个函数的参数对象在Javascript中的数组?

由于人们所做的第一件事情就是将arguments转换为真实的数组,所以我对Javascript语言作者和实现者为什么决定并继续认为arguments 不应该是真正的Array感兴趣。 我不是说这个是鱼眼,我真的对它背后的想法感兴趣。 由于该函数自然被调用时,我不认为这是因为对象arguments引用可以改变,像一些DOM结果…

使用lodash比较数组(项目存在没有秩序)

我知道我可以使用循环,但我试图find一个这样做的优雅方式: 我有两个数组: var array1 = [['a', 'b'], ['b', 'c']]; var array2 = [['b', 'c'], ['a', 'b']]; 我想用lodash来证实两者是一样的。 “相同”我的意思是没有在array1中不包含在array2中的项目。 在检查这些项目之间的平等方面: ['a', 'b'] == ['b', 'a'] 要么 ['a', 'b'] == ['a', 'b'] 既然工作,因为信件将永远是有序的。 提前致谢。

检测parameter passing是一个数组? Javascript

可能重复: 如何检测一个variables是否是一个数组 我有一个简单的问题: 如何检测传递给我的JavaScript函数的参数是否是数组? 我不相信我可以testing: if (typeof paramThatCouldBeArray == 'array') 那可能吗? 我该怎么做? 提前致谢。

如何从PHP会话数组中删除一个variables

我有用于添加variables到会话的PHP代码: <?php session_start(); if(isset($_GET['name'])) { $name = isset($_SESSION['name']) ? $_SESSION['name'] : array(); $name[] = $_GET['name']; $_SESSION['name'] = $name; } if (isset($_POST['remove'])) { unset($_SESSION['name']); } ?> <pre> <?php print_r($_SESSION); ?> </pre> <form name="input" action="index.php?name=<?php echo $list ?>" method="post"> <input type="submit" name ="add"value="Add" /> </form> <form name="input" action="index.php?name=<?php echo $list2 ?>" method="post"> <input type="submit" name="remove" value="Remove" /> […]

array.select()在JavaScript中

JavaScript是否具有与Ruby相似的function? array.select {|x| x > 3} 就像是: array.select(function(x) { if (x > 3) return true})

如何计算PHP数组中的非空条目?

考虑: [name] => Array ( [1] => name#1 [2] => name#2 [3] => name#3 [4] => name#4 [5] => [6] => [7] => [8] => [9] => ) $name = $_POST['name'] 我想要的结果是4 。 count ($name) = 9 count (isset($name)) = 1 count (!empty($name)) = 1 我会认为最后一个会完成我所需要的,但不是(空的条目来自于表单上没有填充的input)。