Атрымаць значэнне аб'ектаў без зацыклення

У мяне ёсць наступны аб'ект:

var input = {
  'foo': 2,
  'bar': 6,
  'baz': 4
};

Ці можна атрымаць значэння гэтага аб'екта, ня абгарнуўшы яго?

Можна выкарыстоўваць jQuery .

Чаканы вынік:

var output = [2, 6, 4];
10
Чаму без цыкла?
дададзена аўтар Barmar, крыніца
Чаму без цыкла?
дададзена аўтар Barmar, крыніца
Падкрэсліванне JS мае функцыю для гэтага: underscorejs.org/#values ​​
дададзена аўтар Znarkus, крыніца
Падкрэсліванне JS мае функцыю для гэтага: underscorejs.org/#values ​​
дададзена аўтар Znarkus, крыніца
Яны з'яўляюцца дынамічнымі.
дададзена аўтар hsz, крыніца
Яны з'яўляюцца дынамічнымі.
дададзена аўтар hsz, крыніца
Калі ключы з'яўляюцца дынамічнымі (г.зн., невядома), то няма ніякага спосабу, каб зрабіць гэта без завесы. Адзначу таксама, што ўласцівасці аб'екта не маюць пэўны парадак, так што няма ніякага спосабу, каб гарантаваць выхадны масіў будзе мець значэнне ў парадку, вы паказваеце. (Вы можаце атрымаць ключы ад аб'екта і сартаваць іх, а затым вырабляць канчатковую выснову, заснаваны на тым, што, але на выхадзе вы паказалі ня заснаваны на алфавітным парадку, так што ...)
дададзена аўтар nnnnnn, крыніца
Калі ключы з'яўляюцца дынамічнымі (г.зн., невядома), то няма ніякага спосабу, каб зрабіць гэта без завесы. Адзначу таксама, што ўласцівасці аб'екта не маюць пэўны парадак, так што няма ніякага спосабу, каб гарантаваць выхадны масіў будзе мець значэнне ў парадку, вы паказваеце. (Вы можаце атрымаць ключы ад аб'екта і сартаваць іх, а затым вырабляць канчатковую выснову, заснаваны на тым, што, але на выхадзе вы паказалі ня заснаваны на алфавітным парадку, так што ...)
дададзена аўтар nnnnnn, крыніца
Цыкл заўсёды будзе неабходна на нейкім узроўні
дададзена аўтар Alex K., крыніца
Цыкл заўсёды будзе неабходна на нейкім узроўні
дададзена аўтар Alex K., крыніца
Вы ведаеце аб'екты ключы? Ці з'яўляюцца яны статычныя?
дададзена аўтар Kasyx, крыніца
Гэта нармальна, калі пад капотам jQuery будзе выкарыстоўваць цыклы?
дададзена аўтар Dovydas Navickas, крыніца
Гэта нармальна, калі пад капотам jQuery будзе выкарыстоўваць цыклы?
дададзена аўтар Dovydas Navickas, крыніца

9 адказы

var arr = $.map(input,function(v){
 return v;
});

Demo --> http://jsfiddle.net/CPM4M/

7
дададзена
Ах, збілі бы на пару секунд.
дададзена аўтар elclanrs, крыніца
што па-ранейшаму цыкл. unefficient адзін, больш за тое
дададзена аўтар Ven, крыніца
яшчэ цыкл ...
дададзена аўтар Vond Ritz, крыніца
var arr = $.map(input,function(v){
 return v;
});

Demo --> http://jsfiddle.net/CPM4M/

7
дададзена
Ах, збілі бы на пару секунд.
дададзена аўтар elclanrs, крыніца
што па-ранейшаму цыкл. unefficient адзін, больш за тое
дададзена аўтар Ven, крыніца
яшчэ цыкл ...
дададзена аўтар Vond Ritz, крыніца

Гэта проста немагчыма без завесы. Там няма Object.values ​​() метад (пакуль) у дадатак да Object.keys() .

Да таго часу, пакуль вы ў асноўным «затрымаліся» з ніжэй канструкцыі:

var values = [];

for (var k in input) {
  if (input.hasOwnProperty(k)) {
    values.push(input[k]);
  }
}

Ці, у сучасных браўзэрах (але, вядома, па-ранейшаму выкарыстоўваючы цыкл і выклік ананімнай функцыі):

var values = Object.getOwnPropertyNames(input).map(function(key) {
    return input[key];
});
6
дададзена
Зараз ёсць Object.values ​​(), але яна ўсё яшчэ знаходзіцца на эксперыментальнай стадыі яго з Google Хром 51,0 і Firefox 47 падтрымлівае функцыю. Калі ласка, азнаёмцеся з раздзелам developer.mozilla.org/en- ЗША/дакументы/Web/JavaScript/Даведка/& hellip;
дададзена аўтар Tola, крыніца

Гэта проста немагчыма без завесы. Там няма Object.values ​​() метад (пакуль) у дадатак да Object.keys() .

Да таго часу, пакуль вы ў асноўным «затрымаліся» з ніжэй канструкцыі:

var values = [];

for (var k in input) {
  if (input.hasOwnProperty(k)) {
    values.push(input[k]);
  }
}

Ці, у сучасных браўзэрах (але, вядома, па-ранейшаму выкарыстоўваючы цыкл і выклік ананімнай функцыі):

var values = Object.getOwnPropertyNames(input).map(function(key) {
    return input[key];
});
6
дададзена
Зараз ёсць Object.values ​​(), але яна ўсё яшчэ знаходзіцца на эксперыментальнай стадыі яго з Google Хром 51,0 і Firefox 47 падтрымлівае функцыю. Калі ласка, азнаёмцеся з раздзелам developer.mozilla.org/en- ЗША/дакументы/Web/JavaScript/Даведка/& hellip;
дададзена аўтар Tola, крыніца

Я не ведаю, чаму вы хочаце без завесы. сюды маё рашэнне

JSON.stringify( input ).replace(/"(.*?)"\:|\{|\}/g,'' ).split(',')

раздрукаваць [2, 6, 4] . Я не правяраў іншыя значэнні JSon

3
дададзена
Гэта рэгулярны выраз працуе толькі на пар ключ-значэнне, дзе значэнне не цытуемых, таму што прагна паглынае значэння, а таксама. Так ён будзе працаваць з прыкладам Ора, але гэта не абагульняць.
дададзена аўтар Dean Stamler, крыніца
var input = {
  'foo': 2,
  'bar': 6,
  'baz': 4
};
var newArr = new Array;
$.each(input,function(key,value) {
    newArr.push(value);
});
alert(newArr)
2
дададзена
<�Код> кожны яшчэ цыкл.
дададзена аўтар hsz, крыніца
Гэта немагчыма без завесы
дададзена аўтар Manish Jangir, крыніца
var input = {
  'foo': 2,
  'bar': 6,
  'baz': 4
};
var newArr = new Array;
$.each(input,function(key,value) {
    newArr.push(value);
});
alert(newArr)
2
дададзена
<�Код> кожны яшчэ цыкл.
дададзена аўтар hsz, крыніца
Гэта немагчыма без завесы
дададзена аўтар Manish Jangir, крыніца

Вы можаце атрымаць значэння з гэтага аб'екта без зацыклення, выкарыстоўваючы <�код > Object.values ​​() метад , як:

var output = Object.values( input );
console.log( output ); //[2, 6, 4]

<�Моцны> DEMO:

<div class="snippet" data-lang="js" data-hide="true" data-console="true" data-babel="false"> <div class="snippet-code snippet-currently-hidden">

var input = {
  'foo': 2,
  'bar': 6,
  'baz': 4
};

var output = Object.values( input );
console.log( output );
</div> </div>

<�Моцны> УВАГА:

<�моцны> Гэта эксперыментальная тэхналогія

     <�Р> Паколькі спецыфікацыя гэтай тэхналогіі не стабілізуецца, праверце табліца сумяшчальнасці для выкарыстання ў розных браўзэрах. Таксама зьвярніце ўвагу, што сінтаксіс і паводзіны эксперыментальнай тэхналогіі могуць быць унесены змены ў будучых версіях браўзэраў як змены спецыфікацыі.

So, currently it supports Chrome & Firefox only.

1
дададзена
Ключы дынамічныя.
дададзена аўтар hsz, крыніца
Калі ключы з'яўляюцца дынамічнымі, як вы ведаеце, колькі ёсць кадуецца індэксы?
дададзена аўтар nnnnnn, крыніца

Вы можаце атрымаць значэння з гэтага аб'екта без зацыклення, выкарыстоўваючы <�код > Object.values ​​() метад , як:

var output = Object.values( input );
console.log( output ); //[2, 6, 4]

<�Моцны> DEMO:

<div class="snippet" data-lang="js" data-hide="true" data-console="true" data-babel="false"> <div class="snippet-code snippet-currently-hidden">

var input = {
  'foo': 2,
  'bar': 6,
  'baz': 4
};

var output = Object.values( input );
console.log( output );
</div> </div>

<�Моцны> УВАГА:

<�моцны> Гэта эксперыментальная тэхналогія

     <�Р> Паколькі спецыфікацыя гэтай тэхналогіі не стабілізуецца, праверце табліца сумяшчальнасці для выкарыстання ў розных браўзэрах. Таксама зьвярніце ўвагу, што сінтаксіс і паводзіны эксперыментальнай тэхналогіі могуць быць унесены змены ў будучых версіях браўзэраў як змены спецыфікацыі.

So, currently it supports Chrome & Firefox only.

1
дададзена
Ключы дынамічныя.
дададзена аўтар hsz, крыніца
Калі ключы з'яўляюцца дынамічнымі, як вы ведаеце, колькі ёсць кадуецца індэксы?
дададзена аўтар nnnnnn, крыніца