我可以通过在该对象中使用另一个值来获取该对象内部的特定值吗?

时间:2019-06-14 05:50:37

标签: javascript arrays

我有多个数组,对象内部有三个键/值对,分别是名称,电话号码和缩写。我有一个循环,该循环创建复选框列表并将初始值设置为其类。我试图弄清楚在选中该框时如何从相应的对象中提取电话号码值并将其保存到单独的数组中。例如:如果选中了带有“ .BRJ”类的框,则将该对象中的1222222222数字保存到新数组中。

我知道我可以在输入中运行onclick函数,但是我一生都无法弄清楚如何获取与该复选框匹配的电话号码。

const management = [
  { name: 'Bob Jones', number: 12222222222, initials: 'BRJ',},
  { name: 'Peter Jones', number: 1333333333, initials: 'PRJ',},   
];

const operatorLoop = (shift, list) => {

  for (var i = 0; i < shift.length; i++) {
    list.innerHTML += `
    <li><input type = 'checkbox' class ='${shift[i].initials}' 
    >${shift[i].name}</input></li>
  `}
}

operatorLoop(management, mgmtUl);

2 个答案:

答案 0 :(得分:1)

您实际上可以在<li>元素的data属性中设置电话号码,然后单击复选框,获取data属性值并将其推送到电话号码数组。

const selectedPhoneNumbers = [];
function clickHandler(e) {
  const phoneNumber = e.target.getAttribute('data-phone');
  selectedPhoneNumbers.push(phoneNumber);
}
const operatorLoop = (shift, list) => {
  for (var i = 0; i < shift.length; i++) {
    list.innerHTML += `
      <li><input type = 'checkbox' data-phone='${shift[i].number}' class ='${shift[i].initials}'>
        ${shift[i].name}</input>
      </li>`
   }
}

这样,您就不必find从对象(内部是数组内部的另一个循环)中单击的项目。

答案 1 :(得分:0)

首先,您应该添加更多属性,其值为phone

const operatorLoop = (shift, list) => {
   for (var i = 0; i < shift.length; i++) {
      list.innerHTML += `
       <li><input type = 'checkbox' data-number='${shift[i].number}' class ='${shift[i].initials}' 
       >${shift[i].name}</input></li>`
   }
}

然后您选中所有复选框

var sList = "";
$('input[type=checkbox]').each(function () {
    sList += (this.checked ? "," + $(this).data('number') : "");
});
console.log (sList); //result that you expect: 12222222222, 1333333333