javascriptオブジェクト属性のサブセットはどうやって取得しますか?

3118 ワード

How to get a subset of a javascript object's properties
Say I have an object:オブジェクトがあるということです.
elmo = { 
  color: 'red',
  annoying: true,
  height: 'unknown',
  meta: { one: '1', two: '2'}
};
I want to make a new object with a subset of its properties.その属性のサブセットで新しいオブジェクトを作成したいです.
 // pseudo code
 subset = elmo.slice('color', 'height')

 //=> { color: 'red', height: 'unknown' }
How may I achieve this?どうやって実現すればいいですか?
シシ1階
参考:https://stackoom.com/question/1Cblw/javascriptオブジェクト属性のサブセットはどうやって取得しますか?
シシ2階
The e e is nothing like that built-in to the coree library,but you can use object destruct ring to do it…コアライブラリには内蔵されていないものがありますが、対象を使って分解して実現できます.
const {color, height} = sourceObject;
const newObject = {color, height};
You could also write a utilit…ユーティリティ関数を作成してもいいです.
const cloneAndPluck = function(sourceObject, keys) {
    const newObject = {};
    keys.forEach((obj, key) => { newObject[key] = sourceObject[key]; });
    return newObject;
};

const subset = cloneAndPluck(elmo, ["color", "height"]);
Libries such as Lodash also have _.pick().Lodashなどのライブラリも_.pick()を持っています.
〹3階
How about:どうですか?
function sliceObj(obj) {
  var o = {}
    , keys = [].slice.call(arguments, 1);
  for (var i=0; i
〹4階
I suggaest taking a look at Lodash;Lodashを見てみたいです.it has a lot of great utility functions.多くの強力なユーティリティ機能を持っています.
For example pick() would be exactly what you seek:例えばpick()はあなたが探しているものです.
var subset = _.pick(elmo, ['color', 'height']);
バイオリンをfiddleする
〹5階
function splice()
{
    var ret = new Object();

    for(i = 1; i < arguments.length; i++)
        ret[arguments[i]] = arguments[0][arguments[i]];

    return ret;
}

var answer = splice(elmo, "color", "height");
シシ6階
Note:though the original question asked was for javascript,it can be done jQuery by below solution注意:最初に提出した問題はjavascriptに対するものですが、以下の解決策でjQueryを完成することができます.
あなたのcan exted jquery ifあなたのwant here is the sample code for one slice:jqueryを拡張することができます.スライスの例コードを取得したい場合:
jQuery.extend({
  sliceMe: function(obj, str) {
      var returnJsonObj = null;
    $.each( obj, function(name, value){
        alert("name: "+name+", value: "+value);
        if(name==str){
            returnJsonObj = JSON.stringify("{"+name+":"+value+"}");
        }

    });
      return returnJsonObj;
  }
});

var elmo = { 
  color: 'red',
  annoying: true,
  height: 'unknown',
  meta: { one: '1', two: '2'}
};


var temp = $.sliceMe(elmo,"color");
alert(JSON.stringify(temp));
here is the fiddle for same:http://jsfiddle.net/w633z/これは同じバイオリンです.http:/js fiddle.net/w 633 z/