获取JavaScript数组的键和值到变量中

时间:2016-11-17 05:47:29

标签: javascript arrays

我有一个JavaScript对象数组。写console.log(myarry)时,它将在控制台中以下面的形式显示。

Array[2]
0: Object
one: "one"

1: Object
two: "two"
length: 2

在这个数组中,我的键和值是相同的,我试图获取变量的键或值并打印它。当我尝试下面的代码时,它显示了 对象对象。

for (var key in myarry) {

              alert("Key is " + key + ", value is" + myarry[key]);


              }

7 个答案:

答案 0 :(得分:9)

检查此代码段

<html> 
    <label>Enter an New item to add in Stock</label> <br> </br> 
    <input type="text" name=" itemName" id="addItemInStock><br></br>
    <p id="errorMsg"></p> 
    <button onclick="addToStock()" return="false">Add</button>
    <p id="showList"></p> 
    <select id="showInDropDown">
        <option value="" disabled selected style="display: block;">Stock Items</option>
    </select>

<script>
    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    document.getElementById("showList").innerHTML = fruits;
    var newItem = document.getElementById("addItemInStock");

    function addToStock(){
        if ((newItem.value) === ""){
            document.getElementById("errorMsg").innerHTML = "Blank item cannot be added!!";
            document.getElementById("errorMsg").style.display = "block";
        }
        else{
            document.getElementById("errorMsg").style.display = "none";
            fruits.push(newItem.value);
            document.getElementById("showList").innerHTML = fruits;
            clearAndShow();
        }
        var sel = document.getElementById("showInDropDown");
        document.getElementById("showInDropDown").innerHTML = "";
        for (var i = 0; i < fruits.length; i++)
        {
            var opt = document.createElement('option');
            sel.appendChild(opt);
        }
    }

    function clearAndShow(){
        newItem.value = "";
    }
</script>

</html>

希望有所帮助

答案 1 :(得分:2)

  • 使用 for-loop 代替for-in来迭代数组。

  • 使用Object.keys获取object

  • 的键

&#13;
&#13;
var arr = [{
  one: 'one'
}, {
  two: 'two'
}];

for (var i = 0, l = arr.length; i < l; i++) {
  var keys = Object.keys(arr[i]);
  for (var j = 0, k = keys.length; j < k; j++) {
    console.log("Key:" + keys[j] + "  Value:" + arr[i][keys[j]]);
  }
}
&#13;
&#13;
&#13;

答案 2 :(得分:2)

我认为您有两个主要选项来使用Object.keys来获取对象的键:forEach;或简单的for

1。使用forEach

如果您使用的环境支持ES5的Array功能(直接或使用填充程序),则可以使用新的forEach

&#13;
&#13;
var myarray = [{one: 'one'}, {two: 'two'}];

myarray.forEach(function(item) {
  var items = Object.keys(item);
  items.forEach(function(key) {
   console.log('this is a key-> ' + key + ' & this is its value-> ' + item[key]);
 });
});
&#13;
&#13;
&#13;

forEach接受迭代器函数,并且可选地,在调用迭代器函数时使用的值this(上面未使用)。为数组中的每个条目调用迭代器函数,按顺序跳过稀疏数组中不存在的条目。虽然

forEach的好处是您不必在包含范围内声明索引和值变量,因为它们作为迭代函数的参数提供,因此很好地限定为那次迭代。

如果您担心为每个阵列条目调用函数的运行时成本,请不要这样做; technical details

2。使用简单的for

有时旧的方法是最好的:

&#13;
&#13;
var myarray = [{one: 'one'}, {two: 'two'}];

for (var i = 0, l = myarray.length; i < l; i++) {
  var items = myarray[i];
  var keys = Object.keys(items);
  for (var j = 0, k = keys.length; j < k; j++) {
    console.log('this is a key-> ' + keys[j] + ' & this is its value-> ' + items[keys[j]]);
  }
}
&#13;
&#13;
&#13;

答案 3 :(得分:0)

  

我正在尝试获取变量的键或值并将其打印出来。

然后你可以

for (var key in myarry) {

       var value =  myarry[key];


}

答案 4 :(得分:0)

你可以这样做

a.forEach(function(value,key) {
   console.log(value,key);

});

您可以在变量中获取键和值并使用它们。

答案 5 :(得分:0)

这是一种有趣的方式。

const arr = [{ one: 'one' }, { two: 'two' }];

Object.entries(arr).forEach(([_, obj]) => {
  const key = Object.keys(obj)[0];
  console.log(`Key is ${key}, value is ${obj[key]}.`);
});

答案 6 :(得分:0)

根据您的构造,您可以做到

const arr = [{ key1: 'val1' }, { key2: 'val2' }]

arr.forEach((a, i) =>
  console.log(i, [{ key: Object.keys(a) }, { val: Object.values(a) }])
)

并回答您的问题

arr.forEach((a, i) =>
  alert("Key is "+ Object.keys(a) + ", value is " +  Object.values(a))
)