Как получить все значения свойств объекта Javascript (не зная ключей)? - PullRequest
429 голосов
/ 05 сентября 2011

Если есть объект Javascript:

var objects={...};

Предположим, он имеет более 50 свойств, не зная имен свойств (это не зная 'ключей'), как получить каждое значение свойства в цикле?

Ответы [ 20 ]

2 голосов
/ 01 октября 2015

Очевидно - как я недавно узнал - это самый быстрый способ сделать это:

var objs = {...};
var objKeys = Object.keys(obj);
for (var i = 0, objLen = objKeys.length; i < objLen; i++) {
    // do whatever in here
    var obj = objs[objKeys[i]];
}
1 голос
/ 17 августа 2018

Использование: Object.values(), мы передаем объект в качестве аргумента и получаем массив значений в качестве возвращаемого значения.

Возвращает массив значений перечисляемых свойств данного объекта. Вы получите те же значения, что и при использовании цикла for in, но без свойств в прототипе. Этот пример, вероятно, прояснит ситуацию:

function person (name) {
  this.name = name;
}

person.prototype.age = 5;

let dude = new person('dude');

for(let prop in dude) {
  console.log(dude[prop]);     // for in still shows age because this is on the prototype
}                              // we can use hasOwnProperty but this is not very elegant

// ES6 + 
console.log(Object.values(dude));
// very concise and we don't show props on prototype
0 голосов
/ 19 июня 2018

Object.entries делают это лучше.

  var dataObject = {"a":{"title":"shop"}, "b":{"title":"home"}}
 
   Object.entries(dataObject).map(itemArray => { 
     console.log("key=", itemArray[0], "value=", itemArray[1])
  })
0 голосов
/ 28 июля 2016

Совместим с ES7, даже некоторые браузеры пока не поддерживают его

Так как Object.values(<object>) будет встроено в ES7 &

Пока вы не дождетесь поддержки всех браузеров, вы можете заключить его в функцию:

Object.vals=(o)=>(Object.values)?Object.values(o):Object.keys(o).map((k)=>o[k])

Тогда:

Object.vals({lastname:'T',firstname:'A'})
 // ['T','A']

Как только браузеры станут совместимыми с ES7, вам не придется ничего менять в своем коде.

0 голосов
/ 15 апреля 2016

Я понимаю, что немного опоздал, но вот шим для нового метода firefox 47 Object.values

Object.prototype.values = Object.prototype.values || function(obj) {
  return this.keys(obj).map(function(key){
    return obj[key];
  });
};
0 голосов
/ 23 августа 2015

Вот функция, похожая на PHP array_values ​​()

function array_values(input) {
  var output = [], key = '';
  for ( key in input ) { output[output.length] = input[key]; }
  return output;
}

Вот как получить значения объекта, если вы используете ES6 или выше:

Array.from(values(obj));
0 голосов
/ 05 сентября 2011

in ECMAScript5 use

 keys = Object.keys(object);

В противном случае, если ваш браузер не поддерживает его, используйте общеизвестный for..in loop

for (key in object) {
    // your code here
}
0 голосов
/ 20 мая 2013
var objects={...}; this.getAllvalues = function () {
        var vls = [];
        for (var key in objects) {
            vls.push(objects[key]);
        }
        return vls;
    }
0 голосов
/ 26 февраля 2014

Теперь я использую Dojo Toolkit , потому что старые браузеры не поддерживают Object.values.

require(['dojox/lang/functional/object'], function(Object) {
    var obj = { key1: '1', key2: '2', key3: '3' };
    var values = Object.values(obj);
    console.log(values);
});

Выход:

['1', '2', '3']
0 голосов
/ 13 мая 2014

использование

console.log(variable)

и если вы используете Google Chrome, откройте консоль с помощью Ctrl + Shift + j

Перейти >> Консоль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...