2015-11-05 28 views
0

嗨,可以说我有一个JSON字符串,它代表包含3列的网格中的记录Id, Name, Status。我目前正在编写一些JavaScript逻辑,您可以通过在文本框中输入一些文本来过滤数据行。过滤器将应用于所有列中的数据。所以如果我输入“James”,下面的记录1将返回一个如果我输入无记录1和2将被返回。问题是如果我键入Id,Name或Status不是数据,而是属性名称,则始终返回所有记录。从Json字符串中删除属性名

Record 1 
{ 
    Id: 1, 
    Name: "James", 
    Status: "None" 
} 

Record 2 
{ 
    Id: 2, 
    Name: "Paul", 
    Status: "None" 
} 

如何修改JSON字符串,这样

{ Id: 2, Name: "Paul", Status: "None"} 

将成为

{ 2, "Paul", "None"} 
+0

简单。如果(a.hasOwnProperty(prop)){console.log(a [prop]) } }'您可以通过将'a [prop]'推到空对象或数组。 –

回答

0

你的问题有点不清楚(我怕马蒂亚斯编辑所做的事更差)。

{ Id: 1, Name: "James", Status: "None" }不是有效的JSON字符串,但它是有效的Javascript对象。 JSON字符串需要在引号中包含它们的值。

如果你确实处理一个JSON字符串,引用属性,您只是想您所要求的输出,你可以做这样的事情:

var person = '{ "Id": 1, "Name": "James", "Status": "None" }'; 
person = person.replace(/\s*"[^"]+"\s*:/g,""); 
// > person = '{ 1, "James", "None" }' 

如果你正在处理一个Javascript对象,得到的值没有属性名的简单的办法是做这样的事情:

var person = { Id: 1, Name: "James", Status: "None" }; 
person = Object.keys(person).map(function(k) { return person[k] }).join(','); 
// > person = '1,James,None' 

两个选项会给你,你可以搜索只是你所感兴趣的值的字符串后一种情况下,您需要添加一些f准确地将结果转化为你所要求的结果,但是后来给出了这个问题,我假设演示文稿不是什么大问题。但是,如果可能的话,我认为如果您修改搜索算法来检查值而不是整个对象,那么您的代码将更接近您的意图。尽管如此,您还没有向我们展示任何执行搜索的代码,所以我现在无法为此添加任何建议。