工作中经常会遇到将json字符串转换为json对象,但是将字符串格式数组转为数组对象的场景却不多

如:



其中label_exp: "["cap_pop","wkb_geometry"]" 就是需要操作的数组对象

假如我们直接使用obj.label_exp.find(item=>{})会提示该label_exp不是一个function

如:

好嘛,那我们换着 使用


for(let i=0;i<labelExp.length;i++){
console.log(labelExp[i]);
}

会取到label_exp: "["cap_pop","wkb_geometry"]" 中的每一个字符

如:

最后使用到了eval 将字符串转换为真正的数组对象


console.log(labelExp);
let labelExpArr = eval('('+labelExp+')');
console.log(labelExpArr);

这样就对了

来我们从打印中对比一下转换前后的两个对象的区别

如:

对比着看是否很明显就能区分哪一个是数组对象呢? 假如我们光看第一个,如:



是否会认为这就一个数组对象呢?

其实evel 应用于json 取值的场景也很多,如下面的一个简单的json


var jsonobj ={
psnLoanCount1:12,
psnLoanCount2:22,
psnLoanCount3:33,
psnLoanCount4:44,
psnLoanCount5:55,
psnLoanCount6:66,
lozd:'kk',
uewjh:'kk',
jdvn:'odsj',
ucnd:'ucn'
};

假如我们想把所有包含psnLoanCount的字段的值统计起啦,这里就可以用到eval


var sumCount = function(jsonobj){
var count_primal; //遍历数据json 获取对应的字段filed
for(var k in jsonobj){
if(k.indexOf("Count")>0){
count_primal==null||count_primal==""?count_primal=k:"";//只接受第一个参数
}
} //截取掉实参值的最后一位,因为最后一位为数字 如:psnLoanCount1
var count=count_primal.substring(0,count_primal.length-1);
var total=0;
for(var i=1;i<7;i++){
//define variable_value key
var variableKey_value=count+i;
total+= eval("jsonobj."+variableKey_value);
}
return total;
};

调用发方法


> console.log(sumCount(jsonobj)); /// 232

这只是一个简单的例子可能实际工作中场景要复杂得多了

js 字符串格式数组转为数组对象的更多相关文章

  1. 用js将CheckBox的值存入数据库和将数据库字符串的值转为数组选中CheckBox

    Index @{ ViewBag.Title = "测试"; } <script src="~/Scripts/jquery-1.10.2.js"> ...

  2. javascript中字符串格式转化成json对象记录

    什么是JSON JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法.JSON也是一种轻量级数据交换格式.JSON非常易于人阅读与编写,同时利于 ...

  3. js 字符串格式化为时间格式

    首先介绍一下我遇到的坑,找了几个关于字符串转时间的,他们都可以就我用的时候不行. 我的原因,我的字符串是MYSQL拿出来的不是标准的时间格式,是不会转成功的. 解决思路:先将字符串转为标准时间格式的字 ...

  4. js字符串首字母转为大写

    function initialsLetterUpperCase(arr){ if(Array.isArray(arr)){ return arr.map(function(val,index,arr ...

  5. js 字符串首字母转为大写 正则

    function replaceReg(str){ var reg = /\b(\w)|\s(\w)/g; str = str.toLowerCase(); return str.replace(re ...

  6. Java将其他数据格式转换成json字符串格式

    package com.wangbo.util; import java.beans.IntrospectionException; import java.beans.Introspector; i ...

  7. JS 字符串对象 数组对象 函数对象 函数作用域

    一.内置对象 object对象:ECMAScript 中的所有对象都由这个对象继承而来:Object 对象中的所有属性和方法都会出现在其他对象中 ToString() : 返回对象的原始字符串表示.V ...

  8. 页面循环绑定(变量污染问题),js面向对象编程(对象属性增删改查),js字符串操作,js数组操作

    页面循环绑定(变量污染问题) var lis = document.querySelectorAll(".ul li") for ( var i = 0 ; i < lis. ...

  9. Json数组(以[ ] 中括号开头)字符串转为json对象

    以 [] 开头的json数组字符串: str = "[{ "姓名":"张三", "年龄":"28" }]&qu ...

  10. nashorn中js数组转为对象的问题

    背景 在项目中,使用jdk中的nashorn执行javascript脚本,例如如下脚本片段: let ctx = session.ctx; ctx.confirm = { //车牌划分后的数组 seg ...

随机推荐

  1. 141. Linked List Cycle (Easy)

    ps:能力有限,若有错误及纰漏欢迎指正.交流 Linked List Cycle (Easy) https://leetcode.cn/problems/linked-list-cycle/descr ...

  2. 自己动手从零写桌面操作系统GrapeOS系列教程——15.用汇编向屏幕输出字符

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 在上一讲中我们介绍了屏幕显示的原理,本讲我们来实战一下. 一.向屏幕输出一个字符mbr4.asm mbr4.asm中的代码如下: ;将屏幕第一行 ...

  3. 001-ksum 求符合条件的 k 个数 1. Two Sum/15. 3Sum/18. 4Sum/

    推荐阅读 000-从零开始的数据结构与算法 001-01-ksum 求符合条件的 k 个数 1. Two Sum/15. 3Sum/18. 4Sum/ 002-两数相加 add two numbers ...

  4. SpringBoot——日志及原理

    一.SpringBoot日志 选用 SLF4j(接口)和 logback(实现类),除了上述日志框架,市场上还存在 JUL(java.util.logging).JCL(Apache Commons ...

  5. TCC 分布式事务解决方案

    更多内容,前往 IT-BLOG 一.什么是 TCC事务 TCC 是Try.Confirm.Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try.确认Confirm.撤销Canc ...

  6. Tomcat启动报错,Server Tomcat v8.0 Server at localhost failed to start

    Eclipse 中Tomcat 启动报错Eclipse的提示窗口  Server Tomcat v8.0 Server at localhost failed to start .日志输出中报   F ...

  7. dart基础---->函数传值

    1. string type main(List<String> args) { String name = "huhx"; changIt(name); print( ...

  8. Win11右键菜单改回传统样式

    Win11右键菜单,比较不人性化,隐藏了一些常用选项,需要点"更多选项"才能显示,多次一举. 解决方法,一句话: reg.exe add "HKCU\Software\C ...

  9. STM32 HAL库学习 (2) USART实验

    使用STM32F407 串口:PA9.PA10(利用CH340G驱动) 一. stm32f4xx_hal_uart.c 函数说明 HAL_UART_Init 函数 要使用一个外设首先要对它进行初始化, ...

  10. 集合-TreeMap源码分析

    一.简介 TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现.TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey.get ...