如何识别数组

如何识别数组

常见的问题是:我如何知晓某个变量是否是数组?
问题在于 JavaScript 运算符 typeof 返回 “object”:

var fruits = ["Banana", "Orange", "Apple", "Mango"];

typeof fruits;             // 返回 object

typeof 运算符返回 “object”,因为 JavaScript 数组属于对象。

解决方案 1:

为了解决这个问题,ECMAScript 5 定义了新方法 Array.isArray():

Array.isArray(fruits);     // 返回 true

此方案的问题在于 ECMAScript 5 不支持老的浏览器

解决方案 2:

创建 isArray() 函数以解决此问题:

1、可以通过检查 constructor 属性来确定某个对象是否为数组(包含单词 “Array”):

function isArray(fruits) {
    return fruits.constructor.toString().indexOf("Array") > -1;
}

假如参数为数组,则上面的函数始终返回 true,更准确的解释是:假如对象原型包含单词 “Array” 则返回 true。

2、更简单,可以检查对象是否是数组函数:

function isArray(fruits) {
    return fruits.constructor === Array;
}

注:

console.log(["Banana", "Orange", "Apple", "Mango"].constructor)
// 返回 "function Array()   { [native code] }"

console.lo(Array)
// 返回 "function Array()   { [native code] }"

解决方案 3:

假如对象由给定的构造器创建,则 instanceof 运算符返回 true:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
 
fruits instanceof Array     // 返回 true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!以下是一个示例代码,它可以识别数组中每个元素出现的次数: ```java import java.util.HashMap; import java.util.Map; public class CountElements { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5, 1, 2, 3, 1, 2, 1}; // 使用 HashMap 存储元素和对应的出现次数 Map<Integer, Integer> countMap = new HashMap<>(); for (int i : array) { if (countMap.containsKey(i)) { // 如果元素已经存在于 map 中,则将其出现次数加一 countMap.put(i, countMap.get(i) + 1); } else { // 如果元素不存在于 map 中,则将其添加并设置出现次数为一 countMap.put(i, 1); } } // 输出每个元素及其出现次数 for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) { System.out.println("Element " + entry.getKey() + " appears " + entry.getValue() + " times"); } } } ``` 该代码使用了一个 HashMap 来存储数组中的元素和对应的出现次数。遍历数组,对于每个元素,如果它已经存在于 HashMap 中,则将其出现次数加一;如果不存在,则将其添加到 HashMap 中,并设置出现次数为一。最后,遍历 HashMap 打印每个元素及其出现次数。 运行代码后,输出如下: ``` Element 1 appears 4 times Element 2 appears 3 times Element 3 appears 2 times Element 4 appears 1 times Element 5 appears 1 times ``` 这样,你就可以得到数组中每个元素出现的次数了。希望能帮到你!如果有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值