【问题标题】:manipulating array values in JavaScript [duplicate]在 JavaScript 中操作数组值 [重复]
【发布时间】:2020-01-15 09:41:21
【问题描述】:

我有以下数组

var my_arry =
      { "Description": "Actual Opening stock"
      , "Fri 05-Aug": "<input type='text' class='form-control' value='600'>"
      , "Mon 01-Aug": "<input type='text' class='form-control' value='200'>"
      , "Thu 04-Aug": "<input type='text' class='form-control' value='500'>"
      } 

我想遍历这个并像下面这样格式化数组

var my_arry = 
      { "Description": "Actual Opening stock"
      , "Fri 05-Aug" : "600"
      , "Mon 01-Aug" : "200"
      , "Thu 04-Aug" : "500"
      } 

基本上是从输入标签中获取值

我使用了以下但没有工作

$.each( my_arry, function( key, value ) {
                    console.log(value.find('input').val())
                 });

我能做到的任何其他方式

【问题讨论】:

  • 你的my_arry - 很公平实际上是一个Object Literal,它也是一个invalid one,因为属性有空格(Fri 05-Aug)但是不包含在引号中。所以,是的,修复它并调用它...调用它my_obby- 你的问题仍然没有意义。循环输入哪些元素?
  • 您的代码无效,您没有数组而是对象,请发布html和minimal reproducible example
  • 如果您从控制台或其他地方复制/粘贴,请帮自己(和我们)一个忙并使用console.log(JSON.stringify(my_arry, null, 2)),然后复制并粘贴结果。
  • 我已经编辑了我的代码
  • 查看这个帖子:stackoverflow.com/a/3104237/540195

标签: javascript jquery arrays


【解决方案1】:

与原生 JS 相同(没有 jQuery)

const my_arry =
        { "Description": "Actual Opening stock"
        , "Fri 05-Aug": "<input type='text' class='form-control' value='600'>"
        , "Mon 01-Aug": "<input type='text' class='form-control' value='200'>"
        , "Thu 04-Aug": "<input type='text' class='form-control' value='500'>"
        } 

const parser = new DOMParser()

var rep = {}
for(let elm in my_arry)
  {
  if (elm === 'Description')
    {
    rep[elm] = my_arry[elm]
    }
   else
    {
    let doc  = parser.parseFromString(my_arry[elm], "text/html")
    rep[elm] =  doc.querySelector('input').value
    }
  }

console.log( rep )

真实数组对象的其他情况

const my_arry = 
  [ { "Description": "Actual Opening stock",   "Fri 05-Aug" : "<input type='text' class='form-control' value='600'>" } 
  , { "Description": "closing Opening stock ", "Fri 05-Aug" : "<input type='text' class='form-control' value='600'>" } 
  ]

const parser = new DOMParser()

for(let elm of my_arry)
  {
  let doc  = parser.parseFromString(elm['Fri 05-Aug'], "text/html")
  elm['Fri 05-Aug'] = doc.querySelector('input').value
  }

console.log( my_arry)

【讨论】:

  • 如果我有两个对象数组怎么办?我的意思是同一个数组中的两个索引
  • @kanishkakumarasiri 你想要什么?对象和数组是两个不同的东西,“对象数组”在任何地方都不存在。你的 my_arry 是一个 js 对象,而不是一个数组,即使我们可以转换或以数组形式使用它。更具体!
  • 意思是这样 const my_arry = { "Description": "Actual opening stock" , "Fri 05-Aug": "" }, { "Description": "close opening stock" , "Fri 05-Aug": "" }
  • 是两个条目
  • @kanishkakumarasiri 实际上这不是 json 有效 => jsonlint.com 我假设您使用具有 2 个条目的对象数组(谁是相同的)?????请停止做错事,所有计算机语言都有严格的语法规则,你必须尊重它们。当技术解决方案的工作非常不愉快时,解释基础。
【解决方案2】:

试试这个代码

var my_arry = { "Description": "Actual Opening stock",
                     "Fri 05-Aug": "<input type='text' class='form-control' value='600'>",
                     "Mon 01-Aug": "<input type='text' class='form-control' value='200'>",
                     "Thu 04-Aug": "<input type='text' class='form-control' value='500'>",
                   }

var arr_new = {};

$.each( my_arry, function( key, value ) {
                if(key != "Description" ){ 
                        arr_new[key] = $(value).val();
                } else {
                        arr_new[key] = value;
                } });

console.log(arr_new)
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 非常感谢你,正是我想要的。感谢您的大力帮助
  • @kanishkakumarasiri np 兄弟。
  • 如果我有两个对象数组怎么办?我的意思是同一个数组中的两个索引
  • 将相同的代码包装在一个循环中?
猜你喜欢
  • 2021-11-12
  • 1970-01-01
  • 2016-07-04
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
相关资源
最近更新 更多